More merge progress
Aaron Bentley
aaron.bentley at utoronto.ca
Thu Apr 21 05:27:29 BST 2005
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Okay, I'm up to patch-27 now.
aaron.bentley at utoronto.ca--baz/bazaar-ng--0--patch-27
http://push.sourcecontrol.net/~abentley/archives/baz/
- - the merge command can now be invoked anywhere in a versioned tree
- - the merge command now accepts $PATH@ as a shorthand for $PATH@$(cd
$PATH; bzr revno)
- - More types of merges are supported. I was able to turn a working
directory into an empty directory and back again, which shows a certain
robustness.
- - revision comparisons are now blazing fast because they use the text-id
- - WorkingTree comparisons are somewhat faster than they were, because I
avoid invoking diff on unchanged files, and detected files with the same
device and inode.
The optimizations:
bzr merge is a three-step process. First we generate an in-memory
changeset for BASE and OTHER. Then we transform that into a three-way
merge changeset. Then we and apply it. These optimizations apply to
the changeset generation part, which is the slow part, and can also
apply to other changeset generation/application commands like undo.
If we implement inode sigs, it would make sense to me to assign the
inode_sig to a text_id. As long as the stats were unchanged, we could
reuse the text_id in the inventory. We'd still have to stat every
source file, but that should yield performance somwhere between "merge .
../bzr.dev2" and "merge .@ .@".
Also, this code can accept external guidance as to which files are
interesting, and which are not, so it supports "bk edit" style, if desired.
The following tests were performed using two copies of baz-ng-130 as the
data set.
These are the stats for bzr merge .@ .@:
0.310u/0.050s cpu, 0.000u/0.000s cum, 0.170 elapsed
0.320u/0.040s cpu, 0.000u/0.000s cum, 0.170 elapsed
0.320u/0.030s cpu, 0.000u/0.000s cum, 0.170 elapsed
Here are the stats for bzr merge .@ .
0.520u/0.130s cpu, 0.000u/0.000s cum, 0.480 elapsed
0.510u/0.130s cpu, 0.000u/0.000s cum, 0.460 elapsed
0.500u/0.140s cpu, 0.000u/0.000s cum, 0.460 elapsed
Here are the stats for bzr merge . ../bzr.dev2
0.340u/0.040s cpu, 0.000u/0.000s cum, 0.190 elapsed
0.320u/0.070s cpu, 0.000u/0.000s cum, 0.200 elapsed
0.320u/0.060s cpu, 0.000u/0.000s cum, 0.200 elapsed
Here are the stats for bzr merge . . (we check to see whether we're
comparing the same device and inode)
0.320u/0.030s cpu, 0.000u/0.000s cum, 0.170 elapsed
0.310u/0.050s cpu, 0.000u/0.000s cum, 0.170 elapsed
0.310u/0.040s cpu, 0.000u/0.000s cum, 0.170 elapsed
Aaron
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org
iD8DBQFCZyux0F+nu1YWqI0RAmgHAJ9ZHL45Uh83nxXwAHl4THlbS5zjQgCeOYg+
nsFcFUVTsgxBtO9twpX2dgg=
=90DF
-----END PGP SIGNATURE-----
More information about the bazaar
mailing list