René Link
René Link

Reputation: 51483

How to apply changes on a different base path using git

The project I'm working with was build using ant in the past. A few weeks ago it was modularized and migrated to maven. Thus the project structure changed and the src directory paths. From e.g. /src to /module-A/src/main/java.

So the repository looks like this

       mavenization        master
           V                 |
                             V
o----o-----o-----o-----o-----o      <-- maven project with module-A/src/main/java
    \
     \
      o-----o-----A                 <-- still an ant project with `/src`
                  ^
                  |
           maintenance branch

The maintenance branch is the one that was released weeks ago and is now the bugfix branch for production.

My problem is that I have to fix a bug in the mainenance branch and of course apply it to the master.But this doesn't work, because the project structure changed with the mavenization commit.

Well, the directory structure under the /module-A/src/main/java is the same as on the maintenance branch's /src directory. But since the base directory differs I guess a cherry-pick is not possible or do you know some option?

Of course I could merge the files manually or using a tool like WinMerge, but I'm looking for a better solution using git.

How can I apply the changes of commit A with a different base path to the master branch?

Upvotes: 3

Views: 995

Answers (1)

ElpieKay
ElpieKay

Reputation: 30986

Make a patch of the mavenization commit. Suppose the commit hash is abc123.

git format-patch -1 abc123

And you will get a patch named 0001.xxx.patch.

Switch to master:

git checkout master

Apply the patch:

git am 0001.xxx.patch --directory=module-A/

git apply also works this way.

Upvotes: 3

Related Questions