threads / discuss / 53212

Cherry pick a commit but with files in another location

Subject: Cherry pick a commit but with files in another location

## tl;dr

5 messages between Apr 11, 2020 and Apr 13, 2020.

replies: 4people: 2as markdown or json

Ani Sinha· Apr 11, 2020, 11:21 UTC · lore
Hi,
I have an use case where I need to cherry pick a change from one branch to another. The change will apply cleanly but the files in the branch  where I want to cherry pick the co mit to have been moved under a different directory. So simple cherry pick will result in conflicts. Is there a clean way to cherry pick in this case? Is there an option to provide -p0, -p1 etc to the patch?

Thanks Ani

Martin Ågren· Apr 11, 2020, 12:21 UTC · re: Ani Sinha · lore

Re: Cherry pick a commit but with files in another location

Hi Ani,
On Sat, 11 Apr 2020 at 13:33, Ani Sinha <ani@anirban.org> wrote:
Show 7 quoted lines
>
> I have an use case where I need to cherry pick a change from one branch
> to another. The change will apply cleanly but the files in the branch
> where I want to cherry pick the co mit to have been moved under a
> different directory. So simple cherry pick will result in conflicts. Is
> there a clean way to cherry pick in this case? Is there an option to
> provide -p0, -p1 etc to the patch?

I just tried the following commands. Admittedly, this example is a bit silly, but at least for me, Git does handle the move just fine. Does this work for you?

  mkdir test
  cd test
  git init
  mkdir olddir
  echo old >olddir/file
  git add olddir/
  git commit -m Initial
  git mv olddir newdir
  git commit -m Move
  echo new >newdir/file
  git commit newdir/file -m Change
  git checkout -b my-branch HEAD~2 # pre-move
  git cherry-pick master
  cat olddir/file
What kind of conflicts do you get in your real-world use case?
Martin
Martin Ågren· Apr 11, 2020, 12:42 UTC · lore

Re: Cherry pick a commit but with files in another location

Hi,
On Sat, 11 Apr 2020 at 14:24, Ani Sinha <ani@anirban.org> wrote:
Show 20 quoted lines
> On Apr 11, 2020, 17:51 +0530, Martin Ågren <martin.agren@gmail.com>, wrote:
>
> > On Sat, 11 Apr 2020 at 13:33, Ani Sinha <ani@anirban.org> wrote:
>
> > > I have an use case where I need to cherry pick a change from one branch
> > > to another. The change will apply cleanly but the files in the branch
> > > where I want to cherry pick the co mit to have been moved under a
> > > different directory. So simple cherry pick will result in conflicts. Is
> > > there a clean way to cherry pick in this case? Is there an option to
> > > provide -p0, -p1 etc to the patch?
>
>
> > I just tried the following commands. Admittedly, this example is a bit
> > silly, but at least for me, Git does handle the move just fine. Does
> > this work for you?
> >
> > mkdir test
> > cd test
> > git init
> > mkdir olddir
...
> > git mv olddir newdir
...
> > What kind of conflicts do you get in your real-world use case?
> My usecase is slightly different. The files I want to patch has been
> moved under a new subdirectory which is under the original root
> directory. So in order to patch, I need to add a new prefix to the patch
> manually.

I'm not able to fully guess your situation from this, but I wonder about one thing: Do you use "git cherry-pick", "git am" or "git apply"? (Or something else entirely?) Are you aware of "-p<n>" for "git apply" (and "--directory=<root>"?) and are wondering what similar options are available with "git cherry-pick"?

I still don't fully understand what you're doing and what you're seeing, so it's hard to get a good picture of the problem.

I'm about to leave, so if I stay silent for several hours, that's why. :)
Martin
Ani Sinha· Apr 11, 2020, 13:25 UTC · re: Martin Ågren · lore

Re: Cherry pick a commit but with files in another location

> On Apr 11, 2020, at 6:13 PM, Martin Ågren <martin.agren@gmail.com> wrote:
> 
> Do you use "git cherry-pick", "git am" or "git apply"?
Yes
> (Or
> something else entirely?) Are you aware of "-p<n>" for "git apply"
> (and "--directory=<root>"?) and are wondering what similar options are
> available with "git cherry-pick"?
Yes was wondering if similar options exist for cherry pick. I wanted to use cherry-pick  so that cherry picks can be tracked by git.
Martin Ågren· Apr 13, 2020, 05:43 UTC · re: Ani Sinha · lore

Re: Cherry pick a commit but with files in another location

On Sat, 11 Apr 2020 at 15:25, Ani Sinha <ani@anirban.org> wrote:
Show 6 quoted lines
>
> > On Apr 11, 2020, at 6:13 PM, Martin Ågren <martin.agren@gmail.com> wrote:
> >
> > Do you use "git cherry-pick", "git am" or "git apply"?
>
> Yes
I still don't understand exactly what it is you're doing.
Show 7 quoted lines
> > (Or
> > something else entirely?) Are you aware of "-p<n>" for "git apply"
> > (and "--directory=<root>"?) and are wondering what similar options are
> > available with "git cherry-pick"?
>
> Yes was wondering if similar options exist for cherry pick. I wanted
> to use cherry-pick  so that cherry picks can be tracked by git.

Are you working on some repo that is publicly available, e.g., on github/gitlab? If so, you could post a link.

What is it that you try doing? You could post the commands you execute.
What happens? You could post error messages.

What do you expect *should* happen? You could try to describe your expectations.

Without that kind of information, it is unfortunately hard to help you.

One final thought: Have you actually tried cherry-picking the way you want to, and have you actually encountered a problem? Or are you looking for solutions to a problem that you're not sure you're having?

Martin

← back to recent threads