bzr diff remotebranch makes poor use of revisions on local repository
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Bazaar |
Confirmed
|
Medium
|
Unassigned |
Bug Description
bzr diff from a checkout of a local repository compared to a remote branch do not use revision information already found in the local repository.
Examples
# working tree with local repository
bzr co branch1
bzr switch lp:remotebranch
bzr switch branch1
bzr diff lp:remotebranch
# shared local repository with multiple branches
bzr co --lightweight /sharedrepo/branch
bzr branch lp:remotebranch /sharedrepo/
cd branch
bzr diff lp:remotebranch
Result: bzr diff fetches all revisions of lp:remotebranch even if all of it is already contained in the local repository. In my case about 10MB of data in some hundred vfs calls.
bzr merge seems to do the right thing, accessing about 50KB of data in the remote repository and zero vfs calls.
Attached is an -Dhpss log from an example using a checkout from local shared repository comparing to a remote lp branch.
Local bzr version: 2.1.1
The number of VFS calls is a significant, but separate, performance problem.