The bzr<->git syncing was stuck for months a bit back without anyone noticing... not even me, until I wanted to check on the state of the ap branches in git, finding them out of date. Syncing operates on git-remote-bzr (a modified version, too), which just like bzr itself requires Python 2. That is, of course, no longer under support. Syncing was just stuck on a task this time, but if it ever breaks now, especially if the raspi it's running on dies, or even just its SD card, I won't be able to restore it.
So,
get to git!
I did give breezy another go. They support local storage either in git or bzr format. Using a local git format was full of pain and internal errors for me when trying to interface with bzr branches, and also what is the point? Using local bzr format integrates well with git, however (I'm snipping out some irrelevant messages):
Code: Select all
[manuel@Kermit breezy]$ brz init # that makes a local bzr repository
Created a standalone tree (format: 2a)
[manuel@Kermit breezy]$ bzr pull https://github.com/ArmagetronAd/armagetronad,branch=trunk
Total 37102 (delta 4538), reused 5470 (delta 4430), pack-reused 31428
+N .bzrignore
+N .cdtproject
...
All changes applied successfully.
Now on revision 3314 (git sha: b'ffac82d5b8bdbdc5e553e671b346dc5a50c15989').
It is completely incompatible with the existing bzr branches, however:
Code: Select all
[manuel@Kermit breezy]$ brz missing lp:armagetronad | head
You have 3314 extra revisions: ....
(3314 is all of the revisions)
And not even merge compatible with other git branches, if used remotely:
Code: Select all
[manuel@Kermit breezy]$ brz missing https://github.com/ArmagetronAd/armagetronad,branch=legacy_0.2.9 | head
You have 3314 extra revisions: ...
Only oddly:
Code: Select all
[manuel@Kermit breezy]$ brz missing https://github.com/ArmagetronAd/armagetronad,branch=legacy_0.2.8.3 | head
You have 2148 extra revisions: ...
And creating a local bzr version of 0.2.9 also works and creates a merge compatible branch:
Code: Select all
$ cd ..
$ mkdir 0.2.9
$ cd 0.2.9
$ bzr init
$ brz pull https://github.com/ArmagetronAd/armagetronad,branch=legacy_0.2.9
$ ...
$ cd ../breezy
$ [manuel@Kermit breezy]$ brz missing ../0.2.9/
$ You have 1862 extra revisions: ...
$ You are missing 1 revision: ...
which is about right.
I found no way to teach breezy about mark files, that is where git-remote-bzr stores which bzr revison corresponds to which git revision, and I keep them backed up.
BUT: I did the same operations on a different PC (one of my VPSes), and the resulting bzr branches were compatible! breezy must be generating the bzr revision identifiers (random GUIDs, normally) from the git hash. What I could verify is that it stores the git revision IDs in bzr.
BUTBUT: It is not round trip safe. You can't push from a bzr branch to git without losing information:
Code: Select all
bazaarmagetron@vmd53736:~/test/brz/brz$ brz push ../git/
brz: ERROR: It is not possible to losslessly push to git. You may want to use --lossy.
bazaarmagetron@vmd53736:~/test/brz/brz$ brz push ../git/ --lossy
All changes applied successfully.
Pushed up to revision 1.
bazaarmagetron@vmd53736:~/test/brz/brz$ brz pull ../git/
brz: ERROR: These branches have diverged. Use the missing command to see how.
Use the merge command to reconcile them.
Yeah, then I did a 'bzr pull --overwrite' to at least see whether one can re-sync to the state from git, and the next
'brz push' produced yet another internal error.
So, in conclusion: breezy is a nice try, but can't be used to provide git/bzr interoperability for multiple users. Pulls from git to bzr work fine, though.
Breezy also comes with a replacement for git-remote-bzr, now for Pyhon 3. I suppose if anything has a chance of keeping our bzr branches alive longer, it's that. But do we need it?
(I tried to use 'bzr' for the repository type and 'brz' for the program consistently, but probably failed)
Edit: Nope, the new git-remote-bzr only works with smart bzr remote servers; on a repo with one commit, pull worked, but it can't then do the empty push back. Internal errors all around. Well, it warns about being experimental. I'll be checking back.