jw-pkg/scripts/pgit.sh
Jan Lindemann bfc215d711 fix: Add -j to git-srv-admin.sh list-personal-projects
Signed-off-by: Jan Lindemann <jan@janware.com>
2013-10-14 14:32:05 +00:00

100 lines
1.2 KiB
Bash

#!/bin/sh
log()
{
echo $@
}
err()
{
log $@
}
fatal()
{
err $@
exit 1
}
marker()
{
log "# ============= $@"
}
config()
{
pdir=`pwd`
while [ `basename $pdir` != proj ]; do
[ "$pdir" = / ] && fatal "didn't find \"proj\" in directory components"
pdir=`dirname $pdir`
done
pdirs=`(cd $pdir; ls -d */.git | sed 's%/.git%%')`
}
# ------------- commands
clone()
{(
local p
config
cd $pdir
local id=`whoami`
local projects=`ssh git.jannet.de /opt/ytools/bin/git-srv-admin.sh -j list-personal-projects`
for p in $projects; do
[ -d $p ] && {
marker "skipping existing $p"
continue
}
marker "cloning $p"
git clone ssh://$id@git.jannet.de/srv/git/$id/proj/$p
done
)}
pull()
{(
local d
config
cd $pdir
for d in $pdirs; do
marker "$d"
(cd $d; git pull origin master)
done
)}
diff()
{(
local d
config
cd $pdir
for d in $pdirs; do
marker $d
(cd $d; git diff --src-prefix=a/$d/ --dst-prefix=b/$d/ "$@")
done
)}
commit()
{(
local d
config
cd $pdir
for d in $pdirs; do
marker $d
(cd $d; git commit "$@")
done
)}
push()
{(
local d
config
cd $pdir
for d in $pdirs; do
marker $d
(cd $d; git push origin master)
done
)}
cmd=$1
shift
$cmd "$@"