Re: my git problem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On Mon, 28 Apr 2008, Andrew Morton wrote:
> 
> origin.patch (generated via git-diff v2.6.25...origin) has:
> 
> commit 7f424a8b08c26dc14ac5c17164014539ac9a5c65
> Author: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
> Date:   Fri Apr 25 17:39:01 2008 +0200
> 
>     fix idle (arch, acpi and apm) and lockdep
> 
> 
> and git-x86 (generated via git-diff origin...git-x86) has:
> 
> commit 0a1679501624482a06c19af49d55b68d3973e2f0
> Author: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
> Date:   Fri Apr 25 17:39:01 2008 +0200
> 
>     fix idle (arch, acpi and apm) and lockdep
>     
> 
> which I assume is the same patch as a different commit.

Yes. 

So this is an example of the fact that that patch was merged in two 
different trees as separate patches, so when you do

	git diff origin..git-x86

then it shows literally the diff from the last common state, and does 
*not* take into account that since that last common state there has been 
updates to the origin branch that essentially conflict (and in this case 
trivially, by just duplicating the work).

> The old `doit' prevented that by doing a merge.

Yes. And it sounds like what you want is that merge, followed by the diff. 
You're not actually asking for "what has changed since the last common 
state". You are literally asking for "what would a merge result in".

> git-diff was "wrong" to claim that this change is actually present in the
> origin->git-x86 diff.  But I guess it cannot operate at that level and we
> need to do the merge to resolve it.  Or something.

I don't actually see what was wrong with the old script.  The merge was
really oddly done, but apart from that, something like this should work
(just your old script with some trivial fixes to 'git merge' and using
somewhat saner arguments):

	doit()
	{
		tree=$1
		upstream=$2
	
		cd $GIT_TREE
		git reset --hard "$upstream"
		git fetch "$tree" || exit 1
		git merge --no-commit FETCH_HEAD > /dev/null
	
		{
			git_header "$tree"
			git shortlog --no-merges ORIG_HEAD..FETCH_HEAD
			git diff -p --stat ORIG_HEAD
		} >$PULL/$tree.patch

		{
			echo DESC
			echo $tree.patch
			echo EDESC
			git_header "$tree"
			git log --no-merges ORIG_HEAD..FETCH_HEAD
		} >$PULL/$tree.txt
		git reset --hard "$upstream"
	}

but obviously that will still result in problems if there are real conflicts.

			Linus
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux