'bzr join' losing revisions?
jp at jpsdomain.org
Sat Jan 25 00:50:15 UTC 2014
Short version: Solved... Jelmer was right, of course (and thank you!),
and that showed me I didn't really want to do it that way anyway. So I
found a different way, detailed below for the record.
On 01/23/2014 07:26 AM, Jelmer Vernooij wrote:
> On Thu, Jan 23, 2014 at 04:30:27AM -0500, JP Vossen wrote:
>> I have a directory structure (tree (format: 2a)) like:
>> top # revno 741 # shared repository: .
>> repo1 # revno 825 # shared repository: top
>> repo2 # revno 809 # shared repository: top
>> Both repo1 and repo2 were originally in top, but I broke them out
>> using 'bzr split'. Now I need to move some code (and revisions and
>> history) from repo1 to repo2. What I think I want to do at a high
>> level is:
>> bzr join repo1 and repo2 && bzr ci
>> bzr mv repo1/some/code /repo2/elsewhere && bzr ci
>> bzr split repo1 and repo2 && bzr ci
>> But when I do this:
>> cd top
>> bzr join repo1
>> bzr join repo2
>> bzr ci
>> All 3 locations go to revno 742 and as far as I can see I just lose
>> the 741+ stuff in repo1&2! (I'm working with copies and have
>> backups and all that, so the only problem is that I can't do what I
> If you run "bzr log -n0" to display merged revisions, that should show
> you the history of repo1 and repo2. By default, "bzr log" does not
> show merged revisions.
I should have noted that I am using 'bzr revno' to get those head revisions.
> Alternatively, try a tool like "bzr qlog".
And I should have noted that is what I'm using to eyeball the
differences. (Awesome cross-platform GUI tools are one reason I prefer
bzr to git. Even though I'm a CLI guy, you simply can't beat a
colorized side-by-side GUI diff/merge tool. Meld is great too.)
But you are 100% correct, I was simply not seeing the "plus in the
circle" indication of the merge (my work-flow doesn't really merge at
all so I'm not used to looking for that). It is all there, but I lose
the human readable revnos I've documented in my status reports. :-/
Ha, it gave me what I asked for but it isn't what I want... :-)
So maybe I should step back to the top and ask: how can I move
code/history from BZR repo1 to repo2? And it turns out, doing a few
'bzr fast-export | bzr fast-import-filter' then some selective 'bzr
fast-import' operations works out better.
That gets the code and history moved without disrupting *most* of the
revnos I've documented. The stuff I'm merging in does get changed
revnos, but I can live with that. (Human-readable revnos are another
reason I prefer bzr over git, even when they occasionally cause an
"issue" like this...)
The lack of wildcards or regular expressions for fast-import-filter was
a bit tedious, and I found the 'fast-import --directory' option didn't
do what I wanted/expected, but that's nothing a 'bzr mv' can't fix.
My example at top was simplified, I actually had 1 dir to move into 3
sections in 3 places in 2 different other repos. So for the record, at
a high level my solution was more-or-less as follows.
### Get all of "some/code"
bzr fast-export ~/top/repo1 \
| bzr fast-import-filter --include_paths='some/code' \
bzr fast-import /tmp/some-code.fi TEMP_some-code
### Break that up into more/smaller pieces x3, only 1 shown
bzr fast-export TEMP_some-code \
| bzr fast-import-filter --include_paths='this-that' \
bzr fast-import /tmp/some-code-this-that.fi TEMP_this-that
### Merge it in x3, only 1 shown
bzr merge --force -r0..-1 /tmp/TEMP_this_that
bzr mv this_that/something elsewhere
bzr ci -m'MIGRATED some code from here to there'
JP Vossen, CISSP |:::======| http://bashcookbook.com/
My Account, My Opinions |=========| http://www.jpsdomain.org/
"Microsoft Tax" = the additional hardware & yearly fees for the add-on
software required to protect Windows from its own poorly designed and
implemented self, while the overhead incidentally flattens Moore's Law.
More information about the bazaar