Mercurial > dotfiles
view .shell.d/50.hg_functions.sh @ 336:ea73ef5dc38c
emacs: avoid weird package.el breakage with newish packages
I've been toting around this package.el from 2009 or so, and something
in the package format seems to have changed that broke me. Thanks to
some related diagnostics by Lucas, I've grabbed the last package.el
that worked with emacs 23 and stashed it here. This seems to work,
modulo some things (notably js2-mode and smex) now seem to require
emacs 24 if you install them using package.el, so this will end up
being brittle on my last couple of emacs23 machines.
author | Augie Fackler <raf@durin42.com> |
---|---|
date | Thu, 29 May 2014 14:30:42 -0400 |
parents | 2b129f63d910 |
children | fc89d315942f |
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')" } alias mq-snapshot=mq_snapshot 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 marks=$(hg book | sed 's/^ \*/ /' | awk '{ print $1 }') if [ "$marks" = "no bookmarks set" ] ; then echo "no bookmarks set, nothing to rebase" fi for b in $(echo $marks) ; do echo "About to rebase $b" hg co --clean $b out=$(hg rebase -d "$1") code=$? echo $out | grep "nothing to rebase" if [ $? = 0 ] ; then echo 'moving on' else if [ $code -ne 0 ] ; then echo "rebase exited with status $out" return 3 fi fi 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