comparison .shell.d/50.hg_functions.sh @ 210:0590f34b92a0

shell.d: split hg and git functions out of vcs functions
author Augie Fackler <durin42@gmail.com>
date Sun, 16 May 2010 20:43:00 -0500
parents .shell.d/50.vcs_functions.sh@9e45ac5350fd
children 0c8939baa35c
comparison
equal deleted inserted replaced
209:c28a1e2c746a 210:0590f34b92a0
1 ## hg_functions
2 # various hg utility functions
3
4 function mq () {
5 ( wcroot ;
6 hg -R .hg/patches $@
7 )
8 }
9
10 function mq-snapshot () {
11 mq ci -m "Applied on $(hg log -r qparent --template '{node|short}\n')"
12 }
13
14 function hgsvnmergebranch() {
15 local targetrev
16 local striprev
17 targetrev=$(hg id | cut -d ' ' -f 1)
18 hg merge $1
19 hg ci -m "Merging $1"
20 striprev=$(hg id | cut -d ' ' -f 1)
21 hg co $targetrev
22 hg diff -r$targetrev:$striprev | hg import - -m "Merged branch $1."
23 hg strip $striprev
24 }
25 alias hg-svn-merge-branch=hgsvnmergebranch
26
27 function hgsvnrebaseall() {
28 for b in `hg log -u 'Augie Fackler <durin42@gmail.com>' --template '{branches}\n' | sort | uniq`
29 do
30 echo "rebase $b"
31 hg co $b
32 if [[ "$?" != "0" ]] ; then
33 echo "abort: could not checkout $b"
34 return
35 fi
36 hg parent --svn > /dev/null
37 if [[ "$?" == "0" ]] ; then
38 hg rebase --svn || return
39 else
40 echo "Skip $b since it has a merge."
41 fi
42 done
43 }
44 alias hg-svn-rebase-all=hgsvnrebaseall
45
46 function hgamend() {
47 hg qimport -r . && hg qref && hg qfin qtip
48 }
49 alias hg-amend=hgamend
50
51 function hg_verify_all() {
52 for x in $(find . -name '.hg') ; do
53 y=$(dirname $x)
54 echo $y
55 hg verify -R $y
56 done
57 }
58
59 function hgsvnmkbranch() {
60 local upstream
61 upstream=$(hg paths default | sed 's%/*$%%')
62 local branchname
63 if [ "x$1" = "x" ] ; then
64 echo 'Must provide new branch name.'
65 return 1
66 fi
67 local d=`hg svn info | grep URL | sed 's/.*://'`
68 local br=`echo $d | awk '{
69 if ( index($1, "trunk") ) {
70 print "trunk"
71 } else {
72 x = index($1, "branches") ;
73 if ( x != 0 ) {
74 sub(".*/branches/", "");
75 sub("/.*", "");
76 print $0
77 }
78 }
79 }'`
80
81 branchname=$br
82 echo svn cp $upstream/$branchname $upstream/branches/$1
83 }
84 alias hg-svn-mkbranch=hgsvnmkbranch