Mercurial > dotfiles
annotate .shell.d/50.vcs_functions.sh @ 225:cd77d083902b
Merge
| author | Augie Fackler <durin42@gmail.com> |
|---|---|
| date | Mon, 20 Sep 2010 07:36:37 -0500 |
| parents | 0590f34b92a0 |
| children | da06f9fd5016 |
| 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 | |
|
133
5b0b8ad2cb2c
vcs_functions: some versions of the shell don't like - in function names.
Augie Fackler <durin42@gmail.com>
parents:
129
diff
changeset
|
5 function ezsvnsync() { |
|
169
040ac89ffe1e
ez-svn-sync: add usage help
Augie Fackler <durin42@gmail.com>
parents:
167
diff
changeset
|
6 if [ x"$1" = "x" ] ; then |
|
040ac89ffe1e
ez-svn-sync: add usage help
Augie Fackler <durin42@gmail.com>
parents:
167
diff
changeset
|
7 echo 'usage: ez-svn-sync repo url' |
|
040ac89ffe1e
ez-svn-sync: add usage help
Augie Fackler <durin42@gmail.com>
parents:
167
diff
changeset
|
8 return 0 |
|
040ac89ffe1e
ez-svn-sync: add usage help
Augie Fackler <durin42@gmail.com>
parents:
167
diff
changeset
|
9 fi |
|
63
1b4067cc97ca
Add a function to svnsync easier. Done this too many times because of hgsubversion.
Augie Fackler <durin42@gmail.com>
parents:
62
diff
changeset
|
10 local repo |
|
1b4067cc97ca
Add a function to svnsync easier. Done this too many times because of hgsubversion.
Augie Fackler <durin42@gmail.com>
parents:
62
diff
changeset
|
11 repo=$1 |
|
169
040ac89ffe1e
ez-svn-sync: add usage help
Augie Fackler <durin42@gmail.com>
parents:
167
diff
changeset
|
12 local url |
|
63
1b4067cc97ca
Add a function to svnsync easier. Done this too many times because of hgsubversion.
Augie Fackler <durin42@gmail.com>
parents:
62
diff
changeset
|
13 url=$2 |
|
1b4067cc97ca
Add a function to svnsync easier. Done this too many times because of hgsubversion.
Augie Fackler <durin42@gmail.com>
parents:
62
diff
changeset
|
14 svnadmin create $repo |
|
1b4067cc97ca
Add a function to svnsync easier. Done this too many times because of hgsubversion.
Augie Fackler <durin42@gmail.com>
parents:
62
diff
changeset
|
15 echo '#!/bin/sh' >> $repo/hooks/pre-revprop-change |
|
1b4067cc97ca
Add a function to svnsync easier. Done this too many times because of hgsubversion.
Augie Fackler <durin42@gmail.com>
parents:
62
diff
changeset
|
16 echo 'exit 0' >> $repo/hooks/pre-revprop-change |
|
1b4067cc97ca
Add a function to svnsync easier. Done this too many times because of hgsubversion.
Augie Fackler <durin42@gmail.com>
parents:
62
diff
changeset
|
17 chmod +x $repo/hooks/pre-revprop-change |
|
1b4067cc97ca
Add a function to svnsync easier. Done this too many times because of hgsubversion.
Augie Fackler <durin42@gmail.com>
parents:
62
diff
changeset
|
18 svnsync init file://`pwd`/$repo $url |
|
1b4067cc97ca
Add a function to svnsync easier. Done this too many times because of hgsubversion.
Augie Fackler <durin42@gmail.com>
parents:
62
diff
changeset
|
19 svnsync sync file://`pwd`/$repo |
|
1b4067cc97ca
Add a function to svnsync easier. Done this too many times because of hgsubversion.
Augie Fackler <durin42@gmail.com>
parents:
62
diff
changeset
|
20 } |
|
133
5b0b8ad2cb2c
vcs_functions: some versions of the shell don't like - in function names.
Augie Fackler <durin42@gmail.com>
parents:
129
diff
changeset
|
21 alias ez-svn-sync=ezsvnsync |
|
63
1b4067cc97ca
Add a function to svnsync easier. Done this too many times because of hgsubversion.
Augie Fackler <durin42@gmail.com>
parents:
62
diff
changeset
|
22 |
| 0 | 23 # Function to grab the url of an svn wc |
| 24 function svnurlof() { | |
| 25 local url | |
| 26 url=`svn info $1 2> /dev/null | grep '^URL: ' | sed 's/URL: //'` | |
| 27 if [ x"$url" = "x" ] ; then | |
| 28 url=`git svn info $1 2> /dev/null | grep '^URL: ' | sed 's/URL: //'` | |
| 29 fi | |
| 30 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
|
31 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
|
32 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
|
33 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
|
34 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
|
35 fi |
| 0 | 36 url=`hg -R $dir svn info 2> /dev/null | grep '^URL: ' | sed 's/URL: //'` |
| 37 fi | |
| 38 if [ x"$url" = "x" ] ; then | |
|
167
f485c32913cd
vcs functions: refer to hgsubversion by the real name
Augie Fackler <durin42@gmail.com>
parents:
156
diff
changeset
|
39 echo -n 'No repo found (tried svn, git-svn, hgsubversion)' |
| 0 | 40 fi |
| 41 echo $url | |
| 42 } | |
| 43 | |
| 44 # Function to clean locks out of svn wcs | |
| 45 function clean_svn_source_trees() { | |
| 46 for aa in */ ; do | |
| 47 pushd $aa > /dev/null | |
| 48 if [ -e .svn ] ; then | |
| 49 echo $aa 'is an svn checkout, cleaning' && svn cleanup | |
| 50 fi | |
| 51 popd > /dev/null | |
| 52 done | |
| 53 } | |
| 54 | |
| 55 # Function to update source trees of known VCS tools in the working dir. | |
| 56 # "known" means ones I'm forced to use on a regular basis | |
| 57 function update_source_trees() { | |
|
184
efa2bfc73d2d
update-source-trees: recurse to find all VCS working copies
Augie Fackler <durin42@gmail.com>
parents:
169
diff
changeset
|
58 if ! ls -l | egrep ^d > /dev/null ; then |
|
efa2bfc73d2d
update-source-trees: recurse to find all VCS working copies
Augie Fackler <durin42@gmail.com>
parents:
169
diff
changeset
|
59 ls -l | egrep ^d |
|
efa2bfc73d2d
update-source-trees: recurse to find all VCS working copies
Augie Fackler <durin42@gmail.com>
parents:
169
diff
changeset
|
60 return |
|
efa2bfc73d2d
update-source-trees: recurse to find all VCS working copies
Augie Fackler <durin42@gmail.com>
parents:
169
diff
changeset
|
61 fi |
|
efa2bfc73d2d
update-source-trees: recurse to find all VCS working copies
Augie Fackler <durin42@gmail.com>
parents:
169
diff
changeset
|
62 local hgpath |
| 0 | 63 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
|
64 pushd $aa > /dev/null || continue |
| 0 | 65 if [ -e .svn ] ; then |
| 66 echo $aa 'is an svn checkout, updating' | |
| 67 svn up | |
|
115
5f00625aa1ed
Add support for svnsync to update_source_trees, alias update_source_trees to update-source-trees
Augie Fackler <durin42@gmail.com>
parents:
83
diff
changeset
|
68 elif [ -e README.txt ] \ |
|
5f00625aa1ed
Add support for svnsync to update_source_trees, alias update_source_trees to update-source-trees
Augie Fackler <durin42@gmail.com>
parents:
83
diff
changeset
|
69 && [ -e format ] \ |
|
5f00625aa1ed
Add support for svnsync to update_source_trees, alias update_source_trees to update-source-trees
Augie Fackler <durin42@gmail.com>
parents:
83
diff
changeset
|
70 && grep "This is a Subversion repository; use the 'svnadmin' tool to examine" README.txt > /dev/null \ |
|
5f00625aa1ed
Add support for svnsync to update_source_trees, alias update_source_trees to update-source-trees
Augie Fackler <durin42@gmail.com>
parents:
83
diff
changeset
|
71 && svn pl --revprop -r 0 file://$(pwd) | fgrep svn:sync-from-url > /dev/null\ |
|
5f00625aa1ed
Add support for svnsync to update_source_trees, alias update_source_trees to update-source-trees
Augie Fackler <durin42@gmail.com>
parents:
83
diff
changeset
|
72 ; then |
|
5f00625aa1ed
Add support for svnsync to update_source_trees, alias update_source_trees to update-source-trees
Augie Fackler <durin42@gmail.com>
parents:
83
diff
changeset
|
73 echo "$aa looks like an svnsync clone, syncing" |
|
5f00625aa1ed
Add support for svnsync to update_source_trees, alias update_source_trees to update-source-trees
Augie Fackler <durin42@gmail.com>
parents:
83
diff
changeset
|
74 svnsync sync file://$(pwd) |
| 0 | 75 elif [ -e .git/svn ] ; then |
| 76 echo $aa 'is a git-svn checkout, updating' | |
| 77 git svn fetch | |
| 78 elif [ -e .git ] ; then | |
| 79 echo $aa 'is a git checkout, updating' | |
| 80 git pull origin master | |
| 81 elif [ -e .hg ] ; then | |
|
184
efa2bfc73d2d
update-source-trees: recurse to find all VCS working copies
Augie Fackler <durin42@gmail.com>
parents:
169
diff
changeset
|
82 echo $aa 'is an hg checkout, updating' |
|
efa2bfc73d2d
update-source-trees: recurse to find all VCS working copies
Augie Fackler <durin42@gmail.com>
parents:
169
diff
changeset
|
83 for hgpath in $(HGRCPATH=/dev/null hg paths | sed 's/.* = //g' | sort | uniq ) ; do |
|
efa2bfc73d2d
update-source-trees: recurse to find all VCS working copies
Augie Fackler <durin42@gmail.com>
parents:
169
diff
changeset
|
84 hg pull --update $hgpath |
|
efa2bfc73d2d
update-source-trees: recurse to find all VCS working copies
Augie Fackler <durin42@gmail.com>
parents:
169
diff
changeset
|
85 done |
|
35
7e9269048856
Fix update_source_trees to also pull versioned mq if it exists.
Augie Fackler <durin42@gmail.com>
parents:
31
diff
changeset
|
86 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
|
87 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
|
88 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
|
89 fi |
| 0 | 90 elif [ -e _MTN ] ; then |
| 91 echo $aa "is an mtn co, updating" && mtn pull && mtn up | |
|
184
efa2bfc73d2d
update-source-trees: recurse to find all VCS working copies
Augie Fackler <durin42@gmail.com>
parents:
169
diff
changeset
|
92 else |
|
efa2bfc73d2d
update-source-trees: recurse to find all VCS working copies
Augie Fackler <durin42@gmail.com>
parents:
169
diff
changeset
|
93 update_source_trees |
| 0 | 94 fi |
| 95 popd > /dev/null | |
| 96 done | |
| 97 } | |
|
115
5f00625aa1ed
Add support for svnsync to update_source_trees, alias update_source_trees to update-source-trees
Augie Fackler <durin42@gmail.com>
parents:
83
diff
changeset
|
98 alias update-source-trees=update_source_trees |
| 0 | 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 } |
