Re: [PATCH 1/2] git-svn: fix dcommit clobbering when committing a series of diffs

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

 



On Mon, Nov 05, 2007 at 03:21:47AM -0800, Eric Wong wrote:
> Our revision number sent to SVN is set to the last revision we
> committed if we've made any previous commits in a dcommit
> invocation.
> 
> Although our SVN Editor code uses the delta of two (old) trees
> to generate information to send upstream, it'll still send
> complete resultant files upstream; even if the tree they're
> based against is out-of-date.
> 
> The combination of sending a file that does not include the
> latest changes, but set with a revision number of a commit we
> just made will cause SVN to accept the resultant file even if it
> was generated against an old tree.
> 
> More trouble was caused when fixing this because we were
> rebasing uncessarily at times.  We used git-diff-tree to check
> the imported SVN revision against our HEAD, not the last tree we
> committed to SVN.  The unnecessary rebasing caused merge commits
> upstream to SVN to fail.
> 
> Signed-off-by: Eric Wong <normalperson@xxxxxxxx>
> ---
> 

[...]

> diff --git a/t/t9106-git-svn-dcommit-clobber-series.sh b/t/t9106-git-svn-dcommit-clobber-series.sh
> new file mode 100755
> index 0000000..4216a88
> --- /dev/null
> +++ b/t/t9106-git-svn-dcommit-clobber-series.sh
> @@ -0,0 +1,56 @@
> +#!/bin/sh
> +#
> +# Copyright (c) 2007 Eric Wong
> +test_description='git-svn dcommit clobber series'
> +. ./lib-git-svn.sh
> +
> +test_expect_success 'initialize repo' "
> +	mkdir import &&
> +	cd import &&
> +	awk 'BEGIN { for (i = 1; i < 64; i++) { print i } }' > file
> +	svn import -m 'initial' . $svnrepo &&
> +	cd .. &&
> +	git svn init $svnrepo &&
> +	git svn fetch &&
> +	test -e file
> +	"
> +
> +test_expect_success '(supposedly) non-conflicting change from SVN' "
> +	test x\"\`sed -n -e 58p < file\`\" = x58 &&
> +	test x\"\`sed -n -e 61p < file\`\" = x61 &&
> +	svn co $svnrepo tmp &&
> +	cd tmp &&
> +		perl -i -p -e 's/^58\$/5588/' file &&
> +		perl -i -p -e 's/^61\$/6611/' file &&
> +		test x\"\`sed -n -e 58p < file\`\" = x5588 &&
> +		test x\"\`sed -n -e 61p < file\`\" = x6611 &&
> +		svn commit -m '58 => 5588, 61 => 6611' &&
> +		cd ..
> +	"
> +
> +test_expect_success 'unrelated some unrelated changes to git' "

The first unrelated seems odd here.

-Peter

> +	echo hi > life &&
> +	git update-index --add life &&
> +	git commit -m hi-life &&
> +	echo bye >> life &&
> +	git commit -m bye-life life
> +	"
> +
[...] 
-
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