Excerpts from Allan McRae's message of 2010-05-29 00:41:24 +0200:
On 29/05/10 04:49, Sebastian Schwarz wrote:
On 2010-05-28 at 19:38 +0200, Philipp Überbacher wrote:
That's why I defaulted to "master", but I get the following error: fatal: git checkout: branch master already exists
It works, but I need some input on whether and how the default case can be handled more gracefully.
There isn't really a need to create a new branch if you just want to do a checkout. Simply change
git checkout --track -b ${_gitbranch} origin/${_gitbranch}
in http://pastebin.com/deqgqjJe to
git checkout origin/${_gitbranch}
See the amendment of the paste at http://pastebin.com/C8sC7wAe
I have been using this for my makepkg-git package for ages:
if [ -d $_gitname ] ; then cd $_gitname && git pull origin working msg "The local files are updated." else git clone $_gitroot cd $_gitname && git checkout origin/working fi
Seems to work...
Allan
This doesn't simply allow you to switch between branches. The current PKGBUILD-git.proto clones once and then works on a copy. I try to keep this behavior. However, I just ran into a potential problem when switching between branches: cp: cannot create regular file `/home/murks/build/mine/pyjacksm-git/src/pyjacksm-build/pyjacksm/.git/objects/pack/pack-17d65751e48b8cabe9a720cabff133d636077bd7.idx': Permission denied cp: cannot create regular file `/home/murks/build/mine/pyjacksm-git/src/pyjacksm-build/pyjacksm/.git/objects/pack/pack-17d65751e48b8cabe9a720cabff133d636077bd7.pack': Permission denied The PKGBUILD I test this on currently looks like this: # Maintainer: Philipp Überbacher <murks at lavabit dot com> pkgname=pyjacksm-git pkgver=20100529 pkgrel=1 pkgdesc="A simple manager for jack-session" arch=('any') url="http://trac.jackaudio.org/wiki/WalkThrough/User/jack_session" license=('GPL') depends=('python') makedepends=('git') provides=('pyjacksm') _gitroot="git://hochstrom.endofinternet.org/pyjacksm.git" _gitname="pyjacksm" _gitbranch="master" #bpjack build() { cd "${srcdir}" msg "Connecting to GIT server...." if [ -d $_gitname ] ; then cd $_gitname && git pull origin msg "The local files are updated." else git clone $_gitroot $_gitname fi msg "GIT checkout done or server timeout" msg "Starting make..." cp -r "$srcdir/$_gitname" "$srcdir/$_gitname-build" cd "$srcdir/$_gitname-build" #^ Creates a copy that still has remote branches available! git checkout ${_gitbranch} # # BUILD HERE # python setup.py install --root=$pkgdir/ --optimize=1 || return 1 } -- Regards, Philipp ----- "Wir stehen selbst enttäuscht und sehn betroffen / Den Vorhang zu und alle Fragen offen." Bertolt Brecht, Der gute Mensch von Sezuan