Code

git-svn: let 'dcommit $rev' work on $rev instead of HEAD
authorThomas Rast <trast@student.ethz.ch>
Fri, 29 May 2009 15:09:42 +0000 (17:09 +0200)
committerEric Wong <normalperson@yhbt.net>
Thu, 25 Jun 2009 07:38:16 +0000 (00:38 -0700)
commit5eec27e35f0a6231d2b0c50d94c726a67f14b23e
treea62a63ba7a38bde8aa3d0a3164f7a36c95a266a1
parent916e1373fb86db9d7019de4e7e74e39c9474a153
git-svn: let 'dcommit $rev' work on $rev instead of HEAD

'git svn dcommit' takes an optional revision argument, but the meaning
of it was rather scary.  It completely ignored the current state of
the HEAD, only looking at the revisions between SVN and $rev.  If HEAD
was attached to $branch, the branch lost all commits $rev..$branch in
the process.

Considering that 'git svn dcommit HEAD^' has the intuitive meaning
"dcommit all changes on my branch except the last one", we change the
meaning of the revision argument.  git-svn temporarily checks out $rev
for its work, meaning that

* if a branch is specified, that branch (_not_ the HEAD) is rebased as
  part of the dcommit,

* if some other revision is specified, as in the example, all work
  happens on a detached HEAD and no branch is affected.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Acked-by: Eric Wong <normalperson@yhbt.net>
Documentation/git-svn.txt
git-svn.perl
t/t9100-git-svn-basic.sh