WIP repos
From FrugalWiki
i18n |
---|
English |
Français |
Contents |
Warning
This howto now has been moved to the official documentation. If you modify this page, please send a patch to keep the official text in sync. Thanks.
Introduction
WIP stands for "Work In Progress". Such repos are used usually only for a few days or weeks, if you except that a package upgrade will break several others, then it's good to create a WIP repo, and merge when you fixed all the revdeps.
Before you begin
If the repo you use for your work already exists, it may need some work:
- Remove the already merged fpms manually. This usually means all fpms.
- Remove the obsolete entries from the fdb, or just remove the file if no fpms left in the repo.
The How
Choose a name. It should not have to be too meaningful, using anything other than a-z 0-9 and underscore may or may not work. For "flac 1.1.3" I have used flac113.
First, clone current to your personal directory on genesis:
cd /home/ftp/pub/other/people/nick git clone /home/ftp/pub/frugalware/frugalware-current mv frugalware-current flac113 mkdir flac113/frugalware-$arch
You need hooks. You have two choices. If you want the standard required + cia + mailing list combo, then:
ln -sf /home/ftp/pub/other/git-hooks/git-hooks.py .git/hooks/post-receive
Otherwise just do:
echo "unset GIT_DIR; cd ..; git checkout -f" > .git/hooks/post-receive
Then
chmod +x .git/hooks/post-receive
This is necessary to update the working directory after a push, so that repoman cl will see the updated FrugalBuild.
To workaround a git bug:
rm -rf .git/refs/remotes
Also edit .git/config and remove the section named 'origin'.
Okay now you can git clone your repo to localhost:
git clone nick@git.frugalware.org:/home/ftp/pub/other/people/nick/flac113
Don't forget to set some variables:
git config user.name "Foo Bar" git config user.email foo@bar.org
Now you have to configure repoman and pacman-g2.
Just append your ~/.repoman.conf:
repos=(${repos[@]} 'flac113') flac113_servers=("nick@git.frugalware.org:/home/ftp/pub/other/people/nick/flac113")
And create a file named /etc/pacman.d/flac113:
[flac113] Server = http://ftp.frugalware.org/pub/other/people/nick/flac113/frugalware-$arch/
Building a package will be a bit more complicated than sudo makepkg -c, so let's create an alias:
alias flacbuild='sudo makepkg -t flac113,current -c'
Then you can build with:
flacbuild
You can record using:
repoman rec
and push with:
repoman -t flac113 -k push
Merge
Once you are ready, go to ~/git/current (make sure you don't have anything to push!) and
git pull nick@git.frugalware.org:/home/ftp/pub/other/people/nick/flac113
This will merge your WIP repo to your local current repo. If there are conflicts, resolve them.
Push your changes:
git push
Finally you need to transfer the fpms from your repo and run a repoman cl for each package:
repoman fpmmerge flac113
Testing
If you want to test this, you'll need repoman>=0.9.6. Actually this wiki page is the documentation for fpmmerge, manpage is not yet updated.