Mercurial > dotfiles
annotate .shell.d/50.vcs_functions.sh @ 46:8946e6ae2747
Stopgap hg-svn-mkbranch command to save me typing until the feature goes into hgsubversion itself.
author | Augie Fackler <durin42@gmail.com> |
---|---|
date | Mon, 09 Feb 2009 15:04:30 -0600 |
parents | 62bfb554ab85 |
children | e80bc65439ac |
rev | line source |
---|---|
0 | 1 ## vcs_functions |
2 # This file contains a handful of functions that relate to using some version | |
3 # control tool or other. | |
4 | |
13
c22ca1514f3b
Add an alias to ease working with mq repos.
Augie Fackler <durin42@gmail.com>
parents:
10
diff
changeset
|
5 alias mq='hg -R .hg/patches' |
c22ca1514f3b
Add an alias to ease working with mq repos.
Augie Fackler <durin42@gmail.com>
parents:
10
diff
changeset
|
6 |
0 | 7 # Function to grab the url of an svn wc |
8 function svnurlof() { | |
9 local url | |
10 url=`svn info $1 2> /dev/null | grep '^URL: ' | sed 's/URL: //'` | |
11 if [ x"$url" = "x" ] ; then | |
12 url=`git svn info $1 2> /dev/null | grep '^URL: ' | sed 's/URL: //'` | |
13 fi | |
14 if [ x"$url" = "x" ] ; then | |
46
8946e6ae2747
Stopgap hg-svn-mkbranch command to save me typing until the feature goes into hgsubversion itself.
Augie Fackler <durin42@gmail.com>
parents:
39
diff
changeset
|
15 local dir |
8946e6ae2747
Stopgap hg-svn-mkbranch command to save me typing until the feature goes into hgsubversion itself.
Augie Fackler <durin42@gmail.com>
parents:
39
diff
changeset
|
16 dir=$1 |
8946e6ae2747
Stopgap hg-svn-mkbranch command to save me typing until the feature goes into hgsubversion itself.
Augie Fackler <durin42@gmail.com>
parents:
39
diff
changeset
|
17 if [ x"$dir" = "x" ] ; then |
8946e6ae2747
Stopgap hg-svn-mkbranch command to save me typing until the feature goes into hgsubversion itself.
Augie Fackler <durin42@gmail.com>
parents:
39
diff
changeset
|
18 dir="." |
8946e6ae2747
Stopgap hg-svn-mkbranch command to save me typing until the feature goes into hgsubversion itself.
Augie Fackler <durin42@gmail.com>
parents:
39
diff
changeset
|
19 fi |
0 | 20 url=`hg -R $dir svn info 2> /dev/null | grep '^URL: ' | sed 's/URL: //'` |
21 fi | |
22 if [ x"$url" = "x" ] ; then | |
23 echo -n 'No repo found (tried svn, git-svn, hgsvnclient)' | |
24 fi | |
25 echo $url | |
26 } | |
27 | |
46
8946e6ae2747
Stopgap hg-svn-mkbranch command to save me typing until the feature goes into hgsubversion itself.
Augie Fackler <durin42@gmail.com>
parents:
39
diff
changeset
|
28 function hg-svn-mkbranch() { |
8946e6ae2747
Stopgap hg-svn-mkbranch command to save me typing until the feature goes into hgsubversion itself.
Augie Fackler <durin42@gmail.com>
parents:
39
diff
changeset
|
29 local upstream |
8946e6ae2747
Stopgap hg-svn-mkbranch command to save me typing until the feature goes into hgsubversion itself.
Augie Fackler <durin42@gmail.com>
parents:
39
diff
changeset
|
30 upstream=$(hg svn url) |
8946e6ae2747
Stopgap hg-svn-mkbranch command to save me typing until the feature goes into hgsubversion itself.
Augie Fackler <durin42@gmail.com>
parents:
39
diff
changeset
|
31 local branchname |
8946e6ae2747
Stopgap hg-svn-mkbranch command to save me typing until the feature goes into hgsubversion itself.
Augie Fackler <durin42@gmail.com>
parents:
39
diff
changeset
|
32 if [ "x$1" = "x" ] ; then |
8946e6ae2747
Stopgap hg-svn-mkbranch command to save me typing until the feature goes into hgsubversion itself.
Augie Fackler <durin42@gmail.com>
parents:
39
diff
changeset
|
33 echo 'Must provide new branch name.' |
8946e6ae2747
Stopgap hg-svn-mkbranch command to save me typing until the feature goes into hgsubversion itself.
Augie Fackler <durin42@gmail.com>
parents:
39
diff
changeset
|
34 return 1 |
8946e6ae2747
Stopgap hg-svn-mkbranch command to save me typing until the feature goes into hgsubversion itself.
Augie Fackler <durin42@gmail.com>
parents:
39
diff
changeset
|
35 fi |
8946e6ae2747
Stopgap hg-svn-mkbranch command to save me typing until the feature goes into hgsubversion itself.
Augie Fackler <durin42@gmail.com>
parents:
39
diff
changeset
|
36 local d=`hg svn info | grep URL | sed 's/.*://'` |
8946e6ae2747
Stopgap hg-svn-mkbranch command to save me typing until the feature goes into hgsubversion itself.
Augie Fackler <durin42@gmail.com>
parents:
39
diff
changeset
|
37 local br=`echo $d | awk '{ |
8946e6ae2747
Stopgap hg-svn-mkbranch command to save me typing until the feature goes into hgsubversion itself.
Augie Fackler <durin42@gmail.com>
parents:
39
diff
changeset
|
38 if ( index($1, "trunk") ) { |
8946e6ae2747
Stopgap hg-svn-mkbranch command to save me typing until the feature goes into hgsubversion itself.
Augie Fackler <durin42@gmail.com>
parents:
39
diff
changeset
|
39 print "trunk" |
8946e6ae2747
Stopgap hg-svn-mkbranch command to save me typing until the feature goes into hgsubversion itself.
Augie Fackler <durin42@gmail.com>
parents:
39
diff
changeset
|
40 } else { |
8946e6ae2747
Stopgap hg-svn-mkbranch command to save me typing until the feature goes into hgsubversion itself.
Augie Fackler <durin42@gmail.com>
parents:
39
diff
changeset
|
41 x = index($1, "branches") ; |
8946e6ae2747
Stopgap hg-svn-mkbranch command to save me typing until the feature goes into hgsubversion itself.
Augie Fackler <durin42@gmail.com>
parents:
39
diff
changeset
|
42 if ( x != 0 ) { |
8946e6ae2747
Stopgap hg-svn-mkbranch command to save me typing until the feature goes into hgsubversion itself.
Augie Fackler <durin42@gmail.com>
parents:
39
diff
changeset
|
43 sub(".*/branches/", ""); |
8946e6ae2747
Stopgap hg-svn-mkbranch command to save me typing until the feature goes into hgsubversion itself.
Augie Fackler <durin42@gmail.com>
parents:
39
diff
changeset
|
44 sub("/.*", ""); |
8946e6ae2747
Stopgap hg-svn-mkbranch command to save me typing until the feature goes into hgsubversion itself.
Augie Fackler <durin42@gmail.com>
parents:
39
diff
changeset
|
45 print $0 |
8946e6ae2747
Stopgap hg-svn-mkbranch command to save me typing until the feature goes into hgsubversion itself.
Augie Fackler <durin42@gmail.com>
parents:
39
diff
changeset
|
46 } |
8946e6ae2747
Stopgap hg-svn-mkbranch command to save me typing until the feature goes into hgsubversion itself.
Augie Fackler <durin42@gmail.com>
parents:
39
diff
changeset
|
47 } |
8946e6ae2747
Stopgap hg-svn-mkbranch command to save me typing until the feature goes into hgsubversion itself.
Augie Fackler <durin42@gmail.com>
parents:
39
diff
changeset
|
48 }'` |
8946e6ae2747
Stopgap hg-svn-mkbranch command to save me typing until the feature goes into hgsubversion itself.
Augie Fackler <durin42@gmail.com>
parents:
39
diff
changeset
|
49 |
8946e6ae2747
Stopgap hg-svn-mkbranch command to save me typing until the feature goes into hgsubversion itself.
Augie Fackler <durin42@gmail.com>
parents:
39
diff
changeset
|
50 branchname=$br |
8946e6ae2747
Stopgap hg-svn-mkbranch command to save me typing until the feature goes into hgsubversion itself.
Augie Fackler <durin42@gmail.com>
parents:
39
diff
changeset
|
51 echo svn cp $upstream/$branchname $upstream/branches/$1 -m \"Creating branch $1\" |
8946e6ae2747
Stopgap hg-svn-mkbranch command to save me typing until the feature goes into hgsubversion itself.
Augie Fackler <durin42@gmail.com>
parents:
39
diff
changeset
|
52 } |
8946e6ae2747
Stopgap hg-svn-mkbranch command to save me typing until the feature goes into hgsubversion itself.
Augie Fackler <durin42@gmail.com>
parents:
39
diff
changeset
|
53 |
0 | 54 # Function to clean locks out of svn wcs |
55 function clean_svn_source_trees() { | |
56 for aa in */ ; do | |
57 pushd $aa > /dev/null | |
58 if [ -e .svn ] ; then | |
59 echo $aa 'is an svn checkout, cleaning' && svn cleanup | |
60 fi | |
61 popd > /dev/null | |
62 done | |
63 } | |
64 | |
65 # Function to update source trees of known VCS tools in the working dir. | |
66 # "known" means ones I'm forced to use on a regular basis | |
67 function update_source_trees() { | |
68 for aa in */ ; do | |
31
a5691a22c92b
Fix a bug in update_source_trees where it could eat any existing dirstack
Augie Fackler <durin42@gmail.com>
parents:
16
diff
changeset
|
69 pushd $aa > /dev/null || continue |
0 | 70 if [ -e .svn ] ; then |
71 echo $aa 'is an svn checkout, updating' | |
72 svn up | |
73 elif [ -e .hg/svn ] ; then | |
74 echo $aa 'is an hg-svn checkout, updating' | |
75 hg svn pull | |
76 hg up | |
77 elif [ -e .git/svn ] ; then | |
78 echo $aa 'is a git-svn checkout, updating' | |
79 git svn fetch | |
80 git repack | |
81 git gc | |
82 elif [ -e .git ] ; then | |
83 echo $aa 'is a git checkout, updating' | |
84 git pull origin master | |
85 git repack | |
86 git gc | |
87 elif [ -e .hg ] ; then | |
88 echo $aa 'is an hg checkout, updating' && hg pull && hg up | |
35
7e9269048856
Fix update_source_trees to also pull versioned mq if it exists.
Augie Fackler <durin42@gmail.com>
parents:
31
diff
changeset
|
89 if [ -e .hg/patches/.hg ] ; then |
7e9269048856
Fix update_source_trees to also pull versioned mq if it exists.
Augie Fackler <durin42@gmail.com>
parents:
31
diff
changeset
|
90 echo $aa 'has an mq, updating that too...' |
7e9269048856
Fix update_source_trees to also pull versioned mq if it exists.
Augie Fackler <durin42@gmail.com>
parents:
31
diff
changeset
|
91 hg -R .hg/patches pull -u |
7e9269048856
Fix update_source_trees to also pull versioned mq if it exists.
Augie Fackler <durin42@gmail.com>
parents:
31
diff
changeset
|
92 fi |
0 | 93 elif [ -e _MTN ] ; then |
94 echo $aa "is an mtn co, updating" && mtn pull && mtn up | |
95 fi | |
96 popd > /dev/null | |
97 done | |
98 } | |
99 | |
100 function vcs_current_branch() { | |
10
b4bfce76123f
Reorder these checks. With my home being in hg, it was winning over any other
Augie Fackler <durin42@gmail.com>
parents:
0
diff
changeset
|
101 git branch 2> /dev/null > /dev/null |
0 | 102 if [ $? = 0 ] ; then |
103 git branch --verbose | grep '^*' | sed 's/* //;s/ /:/;s/ .*//;s/:/ /' | |
104 return 0 | |
105 fi | |
106 # when wc-ng comes out, we'll probably do the following | |
107 # svn info 2> /dev/null > /dev/null | |
108 if [ -e .svn ] ; then | |
109 local d=`svn info | grep URL | sed 's/.*://'` | |
110 local br=`echo $d | awk '{ | |
111 if ( index($1, "trunk") ) { | |
112 print "trunk" | |
113 } else { | |
114 x = index($1, "branches") ; | |
115 if ( x != 0 ) { | |
116 sub(".*/branches/", ""); | |
117 sub("/.*", ""); | |
118 print $0 | |
119 } | |
120 } | |
121 }'` | |
122 local rev=`svn info | grep Revision | sed 's/.*: /r/'` | |
123 echo $br $rev | |
124 return 0 | |
125 fi | |
10
b4bfce76123f
Reorder these checks. With my home being in hg, it was winning over any other
Augie Fackler <durin42@gmail.com>
parents:
0
diff
changeset
|
126 hg branch 2> /dev/null > /dev/null |
b4bfce76123f
Reorder these checks. With my home being in hg, it was winning over any other
Augie Fackler <durin42@gmail.com>
parents:
0
diff
changeset
|
127 if [ $? = 0 ] ; then |
b4bfce76123f
Reorder these checks. With my home being in hg, it was winning over any other
Augie Fackler <durin42@gmail.com>
parents:
0
diff
changeset
|
128 local br=`hg branch | head -c 10` |
b4bfce76123f
Reorder these checks. With my home being in hg, it was winning over any other
Augie Fackler <durin42@gmail.com>
parents:
0
diff
changeset
|
129 local rid=`hg parents | head -n 1 | awk '{print $2}' | head -c 7` |
b4bfce76123f
Reorder these checks. With my home being in hg, it was winning over any other
Augie Fackler <durin42@gmail.com>
parents:
0
diff
changeset
|
130 echo "$br $rid" |
b4bfce76123f
Reorder these checks. With my home being in hg, it was winning over any other
Augie Fackler <durin42@gmail.com>
parents:
0
diff
changeset
|
131 return 0 |
b4bfce76123f
Reorder these checks. With my home being in hg, it was winning over any other
Augie Fackler <durin42@gmail.com>
parents:
0
diff
changeset
|
132 fi |
0 | 133 return 1 |
134 } | |
135 | |
136 # change to the root dir of the current wc | |
137 function wcroot() { | |
138 local root=`hg root 2> /dev/null` | |
139 if [ x$root != 'x' ] ; then | |
140 cd $root | |
141 return 0 | |
142 fi | |
143 git branch 2> /dev/null > /dev/null | |
144 if [ $? = 0 ] ; then | |
145 while [ ! -e .git ] ; do | |
146 cd .. | |
147 done | |
148 return 0 | |
149 fi | |
150 if [ -e .svn ] ; then | |
151 while [ -e ../.svn ] ; do | |
152 cd .. | |
153 done | |
154 return 0 | |
155 fi | |
156 echo No working copy found'!' | |
157 } |