help requested for stitching the history of 3 VCSes
Jeff
web.kiddo at free.fr
Thu May 1 02:53:33 BST 2008
Hello, I have some nice puzzle for you folks. There is a project called
Specto, which, across its lifetime, used 3 different version control
systems. Those are CVS, Subversion and Bazaar. And each time, we did not
keep the history.
1. cvs: https://code.launchpad.net/~vcs-imports/specto/cvs-main
2. svn: http://specto.googlecode.com/svn/trunk/
3. bzr: https://code.launchpad.net/~woutc/specto/specto-woutc
Those are the various repositories that have been used for developing
Specto, from the oldest to the newest. In theory, the code should be
compatible, it's just that we did not migrate the history metadata
between them.
Current situation summary:
* the ability to upgrade to the rich-root-pack repository format
was recently fixed in bzr.dev
(https://bugs.launchpad.net/bzr/+bug/177874), I tried and it
indeed works
* I was told that rich-root-pack would eventually become the
default format
* it is impossible to merge r-r-p into pack-0.92 because pack-0.92
is inferior
* therefore for specto-main (The One Branch to Rule the All and in
Darkness Bind Them, the one which will retain cvs, svn and bzr
history) we need to use r-r-p if I am not mistaken
What I did so far
1. branch specto-cvs: bzr branch
http://bazaar.launchpad.net/~vcs-imports/specto/cvs-main
"specto-main"
2. upgrade it to rich root pack: cd specto-main && bzr upgrade
--rich-root-pack
3. merge specto-svn using bzr-svn (if you want the job already
done, just try merging from this temporary branch: bzr merge
-r0..85 http://bazaar.launchpad.net/~kiddo/specto/specto-svn )
4. eventually (this is where I am stuck/worried), bzr merge -r0..66
http://bazaar.launchpad.net/~woutc/specto/specto-woutc
Between each disparate branch (cvs-svn-woutc), I needed to to something
like bzr merge -r0..85, because they have a discontinuous history after
all.
And here comes the problem/fun part: merging specto-svn into specto-main
(the cvs version at that point) created 4 conflicts (which I resolved by
removing all the .moved files, they seemed pretty much harmless, I
wondered why it even spurred conflicts), then, merging specto-woutc into
specto-main (which is now specto-cvs+svn) gives 7 conflicts. HOWEVER,
the thing that scares me is this:
jeff at khloe:~/trunks/awesome-new-specto/specto-main$ bzr
merge ../specto-woutc/ -r0..66
+N data/
+N data/doc/
+N data/doc/AUTHORS
+N data/doc/COPYING
+N data/doc/ChangeLog
+N data/doc/HACKING
+N data/doc/INSTALL
+N data/doc/VERSION
+N data/glade/
+N data/glade/add_watch.glade
+N data/glade/edit_watch.glade
+N data/glade/import_export.glade
+N data/glade/log_dialog.glade
+N data/glade/notifier.glade
+N data/glade/preferences.glade
+N data/icons/
+N data/icons/hicolor/
+N data/icons/hicolor/scalable/
+N data/icons/hicolor/scalable/specto.svg
+N data/icons/specto_about.png
+N data/icons/specto_tray_1.png
+N data/icons/specto_tray_1.svg
+N data/icons/specto_tray_2.png
+N data/icons/specto_tray_2.svg
+N data/icons/specto_window_icon.png
+N data/icons/specto_window_icon.svg
+N launch.sh
+N po/
+N po/cs/
+N po/cs/specto.mo
+N po/cs/specto.po
+N po/de/
+N po/de/specto.mo
+N po/de/specto.po
+N po/es/
+N po/es/specto.mo
+N po/es/specto.po
+N po/fr/
+N po/fr/specto.mo
+N po/fr/specto.po
+N po/generate_template.py
+N po/it/
+N po/it/specto.mo
+N po/it/specto.po
+N po/pt_BR/
+N po/pt_BR/specto.mo
+N po/pt_BR/specto.po
+N po/pygettext.py
+N po/ro/
+N po/ro/specto.mo
+N po/ro/specto.po
+N po/specto.pot
+N po/sv/
+N po/sv/specto.mo
+N po/sv/specto.po
+N po/tarball_rosetta.sh
+N po/tr/
+N po/tr/specto.mo
+N po/tr/specto.po
+N setup.py
+N spectlib/
+N spectlib/__init__.py
+N spectlib/about.py
+N spectlib/add_watch.py
+N spectlib/balloons.py
+N spectlib/config.py
+N spectlib/console.py
+N spectlib/edit_watch.py
+N spectlib/export_watch.py
+N spectlib/gtkconfig.py
+N spectlib/i18n.py
+N spectlib/i18n_safedict.py
+N spectlib/import_watch.py
+N spectlib/logger.py
+N spectlib/main.py
+N spectlib/notifier.py
+N spectlib/plugins/
+N spectlib/plugins/__init__.py
+N spectlib/plugins/watch_mail_gmail.py
+N spectlib/plugins/watch_mail_imap.py
+N spectlib/plugins/watch_mail_pop3.py
+N spectlib/plugins/watch_system_folder.py
+N spectlib/plugins/watch_system_port.py
+N spectlib/plugins/watch_system_process.py
+N spectlib/plugins/watch_web_greader.py
+N spectlib/plugins/watch_web_static.py
+N spectlib/preferences.py
+N spectlib/test/
+N spectlib/test/__init__.py
+N spectlib/test/test_networkmanager.py
+N spectlib/tools/
+N spectlib/tools/__init__.py
+N spectlib/tools/iniparser.py
+N spectlib/tools/networkmanager.py
+N spectlib/tools/specto_gconf.py
+N spectlib/trayicon.py
+N spectlib/util.py
+N spectlib/watch.py
+N specto
+N specto.desktop
R data/ => data.moved/
R launch.sh => launch.sh.moved
R po/ => po.moved/
R setup.py => setup.py.moved
R spectlib/ => spectlib.moved/
R specto => specto.moved
R specto.desktop => specto.desktop.moved
Conflict adding file data. Moved existing file to data.moved.
Conflict adding file launch.sh. Moved existing file to launch.sh.moved.
Conflict adding file po. Moved existing file to po.moved.
Conflict adding file setup.py. Moved existing file to setup.py.moved.
Conflict adding file spectlib. Moved existing file to spectlib.moved.
Conflict adding file specto.desktop. Moved existing file to
specto.desktop.moved.
Conflict adding file specto. Moved existing file to specto.moved.
7 conflicts encountered.
Those files certainly are not new, as you can see them in the svn
version. I have some feeling that it is not smart enough to figure out
that some files just moved around. stuff like "+N spectlib/trayicon.py"
and "+N data/icons/hicolor/scalable/specto.svg" troubles me. Were those
not already into specto svn? why is it saying it's a new file?
omgponies?
Also attached, a diff of spectlib and spectlib.moved (it's quite heavy).
How do you know bzr did it right (which it certainly didn't in this
case)? why does it say +N when that file should have been marked
moved/modified/whatever? It is highly suspicious. Any help would be much
appreciated as I'm pretty much a bzr (and VCS) newbie and increasingly
confused here. So yeah, how do I go about stitching those branches
together properly without doing something stupid? Am I even doing it in
the right direction?
Thanks!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://lists.ubuntu.com/archives/bazaar/attachments/20080430/5c702799/attachment-0001.htm
-------------- next part --------------
A non-text attachment was scrubbed...
Name: spectlib.diff
Type: text/x-patch
Size: 447301 bytes
Desc: not available
Url : https://lists.ubuntu.com/archives/bazaar/attachments/20080430/5c702799/attachment-0001.bin
More information about the bazaar
mailing list