threads / discuss / 22299

[question] retrieve some patches from another repository

Subject: [question] retrieve some patches from another repository

## tl;dr

3 messages between Jan 20, 2010 and Jan 20, 2010.

replies: 2people: 2as markdown or json

Crane Cai· Jan 20, 2010, 05:46 UTC · lore
Hi,

Sorry to disturb you. I know this mail list is mainly for git development. Till now I have not found some normal user mail list, at last I choose it to ask a question.

My target is: repository A - linux upstream: a->b->c->d->[merge from repository B]->e->f repository B - a maintainer's tree: x->y->z->[merge from repository A]->... I want to retrieve the patches for one driver and its related changes from commit "a" till maintainer's master.

So I do as this:
* git checkout repo B's master
* because maintainer's tree is derived from upstream point "a" will be included,
  use git format-patch repo a source-code-name
There are 2 issues in it:
* merge point will cause duplicated patch generated, for example repo B has x,
  y, z, then accepted by repo A in merge point, and then merge back to repo B
  (they are different with commit id), they will generate 2 twice.
* some commits do not only change the driver source code, and they change some
  other files also. Unfortunately git format-patch cut them. It cause compile
  error.
My question:
  Does some one know git have the ability to do it or do I need to do it
manually?
-- 
Best Regards,
- Crane
Junio C Hamano· Jan 20, 2010, 06:23 UTC · re: Crane Cai · lore

Re: [question] retrieve some patches from another repository

Crane Cai <crane.cai@amd.com> writes:
> * merge point will cause duplicated patch generated, for example repo B has x,
>   y, z, then accepted by repo A in merge point, and then merge back to repo B
>   (they are different with commit id), they will generate 2 twice.

This is inevitable, if 'x' and (say) 'b' corresponds to each other but has textual changes due to different context.

> * some commits do not only change the driver source code, and they change some
>   other files also. Unfortunately git format-patch cut them. It cause compile
>   error.

You are probably running "format-patch a.. -- path/to/file.c". Try giving it the --full-diff option as well. We've recently discussed to make it the default for format-patch but the discussion thread petered out and didn't reach conclusion.

Crane Cai· Jan 20, 2010, 08:09 UTC · re: Junio C Hamano · lore

Re: [question] retrieve some patches from another repository

Hi Junio,
Thank you. It's my pleasure to get git maintainer's response.
On Tue, Jan 19, 2010 at 10:23:14PM -0800, Junio C Hamano wrote:
Show 6 quoted lines
> > * merge point will cause duplicated patch generated, for example repo B has x,
> >   y, z, then accepted by repo A in merge point, and then merge back to repo B
> >   (they are different with commit id), they will generate 2 twice.
> 
> This is inevitable, if 'x' and (say) 'b' corresponds to each other but has
> textual changes due to different context.

So you mean git can not avoid generate 2 twice because they are different commits. If I need this I will manually do it or add a new feature to let format-patch can identify the relationship of the 2 repository, and then move the 'since' point to avoid some point before merge. Maybe it has value to do it. Many subsystem maintainers will easy to provide patchset from any repository derived from linus to another repository which also derived from linus. The patchset will let integration a little easy, you can use 'git bisect' to trace, git comments to understand the code. And all change list is replayed, there almost no issue for integration.

Show 6 quoted lines
> 
> 
> You are probably running "format-patch a.. -- path/to/file.c".  Try giving
> it the --full-diff option as well.  We've recently discussed to make it
> the default for format-patch but the discussion thread petered out and
> didn't reach conclusion.
Yes, you are right.
-- 
Best Regards,
- Crane

← back to recent threads