git svn dcommit COMMIT silently checks in everything if COMMIT is not a complete revision

3 messages, 3 authors, 2016-06-15 · open the first message on its own page

git svn dcommit COMMIT silently checks in everything if COMMIT is not a complete revision

From: Reuben Thomas <hidden>
Date: 2016-06-15 22:52:22

If I run

git svn dcommit COMMIT

with COMMIT being an unambiguous, but partial revision string, it
behaves like git svn dcommit, i.e. commits everything. (If I remember
to copy and paste the whole nine yards of the revision string, it
works as expected, i.e. commits just that revision.)

I'd expect it to work like other git commands, and understand partial
revision strings, or at least bail out saying it was an invalid
revision.

-- 
http://rrt.sc3d.org

Re: git svn dcommit COMMIT silently checks in everything if COMMIT is not a complete revision

From: Frans Klaver <hidden>
Date: 2016-06-15 22:52:22

Hi,

On Thu, Nov 3, 2011 at 4:12 PM, Reuben Thomas [off-list ref] wrote:
If I run

git svn dcommit COMMIT

with COMMIT being an unambiguous, but partial revision string, it
behaves like git svn dcommit, i.e. commits everything. (If I remember
to copy and paste the whole nine yards of the revision string, it
works as expected, i.e. commits just that revision.)

I'd expect it to work like other git commands, and understand partial
revision strings, or at least bail out saying it was an invalid
revision.

Sounds like git-svn skips the rev-parse, or doesn't verify. Which
version of git is this?

Workaround would probably be something like

dcommit.sh:
#!/bin/sh
COMMIT=$1
THINGY=$(git rev-parse --verify $COMMIT) || exit $?
git svn dcommit THINGY

$ dcommit.sh COMMIT


Meh. Better fix git-svn.

Cheers,
Frans

Re: git svn dcommit COMMIT silently checks in everything if COMMIT is not a complete revision

From: Thomas Rast <hidden>
Date: 2016-06-15 22:52:22

Reuben Thomas wrote:
If I run

git svn dcommit COMMIT

with COMMIT being an unambiguous, but partial revision string, it
behaves like git svn dcommit, i.e. commits everything.
In what git version?  How do I reproduce?  I just ran a simple test
and can't:

  svnadmin create svnrepo
  svn co file://$(pwd)/svnrepo svnwt
  cd svnwt
  echo a > a
  svn add a
  svn ci -m'do a'
  cd ..
  git svn clone file://$(pwd)/svnrepo gitwt
  cd gitwt
  echo b > a
  git add a
  git commit -mb
  echo c>a
  git add a
  git commit -mc
  git log --oneline
  git svn dcommit 1b4c4e1

where 1b4c4e1 was the abbreviated hash of the parent commit (i.e., the
commit 'b').  As expected, it commits everything *up to* 1b4c4e1 from
a detached HEAD, not affecting the current branch.

Note that this is different from what you describe:
(If I remember to copy and paste the whole nine yards of the
revision string, it works as expected, i.e. commits just that
revision.)
It was never designed to commit "just that revision".

By "it" I mean 5eec27e (git-svn: let 'dcommit $rev' work on $rev
instead of HEAD, 2009-05-29), which changed it to the current
semantics and went into 1.6.4.  Before that, 'git svn dcommit <foo>'
did something weird and you should avoid giving it arguments.

-- 
Thomas Rast
trast@{inf,student}.ethz.ch
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help