Mercurial > dotfiles
view .shell.d/50.hg_functions.sh @ 244:3fd758a51947
hgrc: two useful aliases for working copy history
author | Augie Fackler <durin42@gmail.com> |
---|---|
date | Thu, 05 May 2011 10:50:36 -0500 |
parents | 369d869082fd |
children | 93b24cdd2cce |
line wrap: on
line source
## hg_functions # various hg utility functions function mq () { ( wcroot ; hg -R .hg/patches $@ ) } function mq-snapshot () { mq ci -m "Applied on $(hg log -r qparent --template '{node|short}\n')" } function hg_rebase_all () { hg sum | egrep 'commit: .*\(clean\)$' || (echo 'abort: wc not clean' ; return 1) || return 1 if [ "x$1" = "x" ] ; then echo 'abort: give destination for rebase' return 2 fi if [ "$1" = "tip" ] ; then echo 'abort: tip is essentially never what you mean here' return 2 fi for b in $(hg book | sed 's/^ \*/ /' | awk '{ print $1 }') ; do hg co --clean $b hg rebase -d "$1" done } alias hg-rebase-all=hg_rebase_all function hgsvnmergebranch() { local targetrev local striprev targetrev=$(hg id | cut -d ' ' -f 1) hg merge $1 hg ci -m "Merging $1" striprev=$(hg id | cut -d ' ' -f 1) hg co $targetrev hg diff -r$targetrev:$striprev | hg import - -m "Merged branch $1." hg strip $striprev } alias hg-svn-merge-branch=hgsvnmergebranch function hgsvnrebaseall() { for b in `hg log -u 'Augie Fackler <durin42@gmail.com>' --template '{branches}\n' | sort | uniq` do echo "rebase $b" hg co $b if [[ "$?" != "0" ]] ; then echo "abort: could not checkout $b" return fi hg parent --svn > /dev/null if [[ "$?" == "0" ]] ; then hg rebase --svn || return else echo "Skip $b since it has a merge." fi done } alias hg-svn-rebase-all=hgsvnrebaseall function hgamend() { hg qimport -r . && hg qref && hg qfin qtip } alias hg-amend=hgamend function hg_verify_all() { for x in $(find . -name '.hg') ; do y=$(dirname $x) echo $y hg verify -R $y done } function hgsvnmkbranch() { local upstream upstream=$(hg paths default | sed 's%/*$%%') local branchname if [ "x$1" = "x" ] ; then echo 'Must provide new branch name.' return 1 fi local d=`hg svn info | grep URL | sed 's/.*://'` local br=`echo $d | awk '{ if ( index($1, "trunk") ) { print "trunk" } else { x = index($1, "branches") ; if ( x != 0 ) { sub(".*/branches/", ""); sub("/.*", ""); print $0 } } }'` branchname=$br echo svn cp $upstream/$branchname $upstream/branches/$1 } alias hg-svn-mkbranch=hgsvnmkbranch