Broken branch from svn
Ivan Sagalaev
maniac at softwaremaniacs.org
Fri Oct 23 12:17:02 BST 2009
Hello!
Recently we started working with an SVN repo from bzr. We're working
with checkouts to ensure that branches are always in sync with the svn
repo. After couple of commits we've got a problem for which I don't have
any name beside "strange".
Unfortunately I can't publish a faulty branch (it has "NDA" stickers all
over it) but I'm a Python programmer and can do any testing and
debugging needed. I just don't know where the hell to start %-). So
please help!
Environment:
- 2 developers (a "guy" and a "girl" for easy reference)
- bzr 2.0.1, bzr-svn 1.0
Symptoms:
- svn revno are absent after one of the commits:
revno: 500 [merge]
committer: guy
branch nick: trunk/lenta_ng
timestamp: Wed 2009-10-21 16:42:30 +0400
message:
...
------------------------------------------------------------
revno: 499
svn revno: 7052 (on /trunk/lenta_ng)
committer: girl
timestamp: Tue 2009-10-20 09:09:34 +0000
message:
...
However svn itself has those revisions, I can see them.
- trying to get a diff between 499 and 500 revisions fails with a traceback:
Traceback (most recent call last):
File "/usr/lib/python2.6/dist-packages/bzrlib/commands.py", line
842, in exception_to_return_code
return the_callable(*args, **kwargs)
File "/usr/lib/python2.6/dist-packages/bzrlib/commands.py", line
1037, in run_bzr
ret = run(*run_argv)
File "/usr/lib/python2.6/dist-packages/bzrlib/commands.py", line
654, in run_argv_aliases
return self.run(**all_cmd_args)
File "/usr/lib/python2.6/dist-packages/bzrlib/commands.py", line
1052, in ignore_pipe
result = func(*args, **kwargs)
File "/usr/lib/python2.6/dist-packages/bzrlib/builtins.py", line
1917, in run
extra_trees=extra_trees, using=using)
File "/usr/lib/python2.6/dist-packages/bzrlib/diff.py", line
432, in show_diff_trees
return differ.show_diff(specific_files, extra_trees)
File "/usr/lib/python2.6/dist-packages/bzrlib/diff.py", line
839, in show_diff
return self._show_diff(specific_files, extra_trees)
File "/usr/lib/python2.6/dist-packages/bzrlib/diff.py", line
899, in _show_diff
self._diff(file_id, oldpath, newpath, kind[0], kind[1])
File "/usr/lib/python2.6/dist-packages/bzrlib/diff.py", line
925, in _diff
new_path, old_kind, new_kind)
File "/usr/lib/python2.6/dist-packages/bzrlib/diff.py", line
491, in _diff_many
new_kind)
File "/usr/lib/python2.6/dist-packages/bzrlib/diff.py", line
620, in diff
new_date = _patch_header_date(self.new_tree, file_id, new_path)
File "/usr/lib/python2.6/dist-packages/bzrlib/diff.py", line
444, in _patch_header_date
mtime = tree.get_file_mtime(file_id, path)
File "/usr/lib/python2.6/dist-packages/bzrlib/revisiontree.py",
line 106, in get_file_mtime
revision = self._repository.get_revision(ie.revision)
File "/usr/lib/python2.6/dist-packages/bzrlib/decorators.py",
line 138, in read_locked
result = unbound(self, *args, **kwargs)
File
"/usr/lib/python2.6/dist-packages/bzrlib/repofmt/knitrepo.py", line 208,
in get_revision
return self.get_revision_reconcile(revision_id)
File "/usr/lib/python2.6/dist-packages/bzrlib/decorators.py",
line 138, in read_locked
result = unbound(self, *args, **kwargs)
File "/usr/lib/python2.6/dist-packages/bzrlib/repository.py",
line 1846, in get_revision_reconcile
return self._get_revisions([revision_id])[0]
File "/usr/lib/python2.6/dist-packages/bzrlib/decorators.py",
line 138, in read_locked
result = unbound(self, *args, **kwargs)
File "/usr/lib/python2.6/dist-packages/bzrlib/repository.py",
line 1863, in _get_revisions
raise errors.NoSuchRevision(self, revid)
NoSuchRevision:
CHKInventoryRepository('file:///home/isagalaev/Desktop/lenta_ng/.bzr/repository/')
has no revision vgol at pandev.yandex.ru-20091021123548-0o87tyxkbdx5x2ei
- the same exception is raised when diffing between any revision for the
files that were in commit 500 (I'm guessing it happens upon accessing
their history)
- those exception happen only on girl's checkouts but the guy who
actually committed that revision 500 can work with his branch normally
- `bzr check` on a fresh checkout says:
Checking working tree at '/home/isagalaev/Desktop/lenta_ng'.
Checking branch at 'file:///home/isagalaev/Desktop/lenta_ng/'.
Checking repository at 'file:///home/isagalaev/Desktop/lenta_ng/'.
checked repository <bzrlib.transport.local.LocalTransport
url=file:///home/isagalaev/Desktop/lenta_ng/> format <RepositoryFormat2a>
504 revisions
882 file-ids
2 ghost revisions
7 inconsistent parents
checked branch file:///home/isagalaev/Desktop/lenta_ng/ format
Branch format 7
- after `bzr reconcile` inconsistent parents are gone, 2 ghosts still there
- if it means anything, that commit was made with `debcommit -Rr` that
was calling bzr commands (bzr commit, bzr tag).
Looks like there are indeed 2 revisions that somehow got "lost" in the
process but I don't know how to make a branch to forget about them.
We'll happily discard current bzr repo and make a new one, if needed.
Thanks for any idea!
More information about the bazaar
mailing list