I’ve found myself using these functions a lot while working on exherbo (which are suitable for Gentoo overlays using git too):
1 # Fernando J. Pereda
2 # exherbo workflow
3
4 reponame()
5 {
6 local reponame=$1
7 if [[ -z ${reponame} ]] ; then
8 local t=$(git rev-parse --git-dir)
9 t=${t//\.git}
10 if [[ -z ${t} ]] ; then
11 t=${PWD}
12 else
13 t=${t%/}
14 fi
15 reponame=${t##*/}
16 fi
17 echo ${reponame}
18 }
19
20 repoclean()
21 {
22 local n=$(reponame $1)
23 (
24 cd /var/repositories/"${n}"
25 sudo git clean -fd
26 sudo git checkout -f
27 )
28 }
29
30 repoexport()
31 {
32 local n=$(reponame $1) rhead repo
33 repo=/var/repositories/"${n}"
34 rhead=$(git --git-dir="${repo}"/.git rev-parse HEAD)
35 if ! git cat-file -t ${rhead} >/dev/null 2>&1 ; then
36 echo >&2 "Remote HEAD not found. Need 'git pull --rebase'?"
37 return 127
38 fi
39 GIT_PAGER=cat git log --pretty=format:'- %s' ${rhead}..
40 echo
41 git diff ${rhead}.. | ( cd ${repo} ; sudo git apply - )
42 }
I usually work in my own clones of the repositories I have configured in paludis, for instance:
$ for repo in x11 arbor ; do git clone --reference /var/repository/${repo} git://git.exherbo.org/${repo} ; done
Then I work on topic branches until they are ready:
$ git checkout -b mybranch [ gvim + git commit + ... ] $ repoclean $ repoexport $ sudo paludis ...... # try the package(s) I'm working on until I'm happy
At that point, I do:
$ git fetch $ git rebase origin/master $ git checkout master $ git merge mybranch $ git push
— ferdy
Update: As rbrown points out. The clone command was wrong.
