From: Steven Grimm <koreth@midwinter.com>
To: git@vger.kernel.org
Subject: git-svn can lose changes silently
Date: Wed, 08 Nov 2006 16:34:46 -0800 [thread overview]
Message-ID: <455277A6.2000404@midwinter.com> (raw)
git-svn is happy to overwrite changes in the svn repository with no
warnings. Didn't seem to be known behavior when I mentioned it in #git,
so here's an example, starting completely from scratch to make it easier
to reproduce. I'm using git-svn 1.4.3 and svn 1.2.3 on OS X.
First I create a new svn repository and stick a test file there:
% mkdir /tmp/svntest
% cd /tmp/svntest
% svnadmin create svn-repo
% svn co file:///tmp/svntest/svn-repo /tmp/svntest/svn-client
Checked out revision 0.
% cd /tmp/svntest/svn-client
% mkdir -p project/trunk
% echo "initial contents" > project/trunk/testfile
% svn add project/trunk/testfile
svn: 'project/trunk' is not a working copy
% svn add project
A project
A project/trunk
A project/trunk/testfile
% svn commit -m "initial commit"
Adding project
Adding project/trunk
Adding project/trunk/testfile
Transmitting file data .
Committed revision 1.
Now I clone that svn repository using git-svn and pull in the contents
of the svn repo:
% cd /tmp/svntest
% git-svn init file:///tmp/svntest/svn-repo/project/trunk git-repo
% cd git-repo
% git-svn fetch
A project/trunk/testfile
Committing initial tree 9ca0a5a8cb5ee41744aaf17f859e945f2ebaa7d4
r1 = 63c70a5e17ffb095a31e96b1a56612f1f8423202
Now I create a development branch and commit a change to the test file:
% git-checkout -b devel
% echo "a second line from the git side" >> testfile
% git-commit -a -m "git-side commit"
Now I go make a change on the svn side and commit it.
% cd /tmp/svntest/svn-client/project/trunk
% echo "a second line from the svn side" >> testfile
% svn commit -m "a second svn commit"
Sending trunk/testfile
Transmitting file data .
Committed revision 2.
At this point the svn repository has the testfile with two lines:
"initial contents" and "a second line from the svn side". Now, back on
the git side, I commit my git-side change to svn (here's where the bug
happens):
% cd /tmp/svntest/git-repo
% git-svn dcommit
diff-tree 679c0db253781216b9b72b51f2dfffec5711f1a3~1
679c0db253781216b9b72b51f2dfffec5711f1a3
M testfile
Committed 3
M project/trunk/testfile
r2 = 7d7923588ffb41eb756959d71623581df9318603
M project/trunk/testfile
r3 = 25a5fefe01389260274bb2617bc36a2cce18f15d
No changes between current HEAD and refs/remotes/git-svn
Hard resetting to the latest refs/remotes/git-svn
Finally, I go back to the svn side and update from the repo:
% cd /tmp/svntest/svn-client
% svn up
U project/trunk/testfile
Updated to revision 3.
% cat project/trunk/testfile
initial contents
a second line from the git side
The change I checked in from the svn side has vanished without a trace,
no warning messages or anything.
It is probably not a feature that you can lose changes without knowing
about it! Even if I'd run git-svn fetch before that commit, it still
wouldn't help if the svn version of the file changed between the time I
ran fetch and the time I ran dcommit, totally possible with a busy svn
repository.
Opinions? Suggestions on fixing it? Do other people agree this is a bug?
next reply other threads:[~2006-11-09 0:35 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-11-09 0:34 Steven Grimm [this message]
2006-11-09 7:33 ` git-svn can lose changes silently Seth Falcon
2006-11-09 9:19 ` [PATCH] git-svn: fix dcommit losing changes when out-of-date from svn Eric Wong
2006-11-09 10:00 ` Junio C Hamano
2006-11-09 17:42 ` Seth Falcon
2006-11-09 19:22 ` Eric Wong
2006-11-09 19:30 ` Steven Grimm
2006-11-09 20:47 ` Eric Wong
2006-11-09 22:37 ` Steven Grimm
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=455277A6.2000404@midwinter.com \
--to=koreth@midwinter.com \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.