On 18/06/14 18:49, Lukas Jirkovsky wrote:
On 6 January 2014 02:35, Allan McRae <allan@archlinux.org> wrote:
The news is I took a look a decided I will need to review the patch when I have a suitable block of time to do so. This will definitely be before the next release.
Allan
What is the status of these patches? I've been using them for git and mercurial PKGBUILDs since they were first posted and I haven't seen a single glitch yet.
They are in my queue (which stands at about 30 patches long...). They will be done before the next pacman release. Given my current work commitments and the upcoming glibc release, it may still take a while.
Also, I wanted to share some of my opinions regarding the implementation of updates with bazaar. I found out that the current implementation doesn't use DVCS features effectively. I will illustrate it on an example on how extract_bzr() works now:
1. bzr checkout "$dir" -r "$rev" --lightweight
this does a lightweight checkout of $dir at a revision rev. "bzr revno" shows the most recent revision (ie. the revision corresponding to the "upstream" dir).
2. bzr pull "$dir" -q --overwrite -r "$rev"
this basically synchronizes $dir and the checkout in $srcdir to the revision $rev. Now "bzr revno" correctly returns $rev. However, the problem is that this apparently throws away any never revisions from the repository clone in $dir. This means if the user wanted to update from an older revision to a newer revision they would have to download the new revisions from the Internet again.
A found a solution, but it would require updating existing packages to use "bzr revno --tree" instead of "bzr revno".
1. bzr checkout "$dir" --lightweight
there is no problem in this, but checking out a specified revision is kind of pointless now.
2. bzr update -q -r "$rev" &&
This updates the working tree to the specified revision. The big advantage of this approach is that it allows the user to move between revisions freely without needing to download everything from the Internet all over again.
The problem is that "bzr revno" will still return the newest revision. That's because "bzr revno" returns the revision of the upstream and not the revision of the working directory. To obtain the revision of the working directory one has to use "bzr revno --tree".
3. bzr revert && bzr clean-tree -q --detritus --force
Needed only for the incremental updates. "bzr update" does an automatic merge with the changes in the working directory. If there were conflicts, it will mark them in files in the same way as git etc. by adding lines such as >>>> etc. "bzr revert" is used to revert the conflicting files to the repository version. The automatic merge also sometimes leaves some backup files. These are cleaned up using the clean-tree command.
TLDR: bazaar is weird and the current implementation of bzr in makepkg is kind of broken.
Send a patch that you think is appropriate. I don't use bzr at all. Allan