added merge subcommand
This commit is contained in:
parent
97ae01a31a
commit
97b09411bd
36
jsvn
36
jsvn
@ -18,6 +18,9 @@
|
|||||||
# - switch to 'trunk', branch name, or tag name without having to specify
|
# - switch to 'trunk', branch name, or tag name without having to specify
|
||||||
# the full URL
|
# the full URL
|
||||||
# - falls back to Subversion "switch" if <short_name> doesn't exist
|
# - falls back to Subversion "switch" if <short_name> doesn't exist
|
||||||
|
# merge <branch>
|
||||||
|
# - merge branch <branch> into the current WC path
|
||||||
|
# - falls back to Subversion "merge" if <branch> doesn't exist
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
@ -109,7 +112,7 @@ def tags(argv, svn):
|
|||||||
sys.stdout.write(t + '\n')
|
sys.stdout.write(t + '\n')
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
def switch(argv, svn, colorsvn):
|
def switch(argv, svn):
|
||||||
if len(argv) < 2:
|
if len(argv) < 2:
|
||||||
return -1
|
return -1
|
||||||
root = getSVNRoot(svn)
|
root = getSVNRoot(svn)
|
||||||
@ -127,6 +130,27 @@ def switch(argv, svn, colorsvn):
|
|||||||
return 0
|
return 0
|
||||||
return -2
|
return -2
|
||||||
|
|
||||||
|
def merge(argv, svn):
|
||||||
|
if len(argv) < 2:
|
||||||
|
return -1
|
||||||
|
root = getSVNRoot(svn)
|
||||||
|
branches = getSVNBranchList(svn)
|
||||||
|
if not argv[1] in branches:
|
||||||
|
return -3
|
||||||
|
lines = Popen([svn, 'log', '--stop-on-copy', root + '/branches/' + argv[1]])
|
||||||
|
rev = 0
|
||||||
|
for line in lines:
|
||||||
|
m = re.match(r'^r(\d+)\s', line)
|
||||||
|
if m is not None:
|
||||||
|
rev = m.group(1)
|
||||||
|
if rev == 0:
|
||||||
|
sys.stderr.write('Could not get first branch revision\n')
|
||||||
|
return -4
|
||||||
|
path = getSVNRelPath(svn)
|
||||||
|
Popen([svn, 'merge', '-r%s:HEAD' % rev,
|
||||||
|
root + '/branches/' + argv[1] + path, '.']).wait()
|
||||||
|
return -2
|
||||||
|
|
||||||
def main(argv):
|
def main(argv):
|
||||||
realsvn = findInPath('svn')
|
realsvn = findInPath('svn')
|
||||||
colorsvn = findInPath('colorsvn')
|
colorsvn = findInPath('colorsvn')
|
||||||
@ -141,7 +165,12 @@ def main(argv):
|
|||||||
return branch(argv, realsvn)
|
return branch(argv, realsvn)
|
||||||
|
|
||||||
if argv[0] == "switch":
|
if argv[0] == "switch":
|
||||||
r = switch(argv, realsvn, colorsvn)
|
r = switch(argv, realsvn)
|
||||||
|
if r >= 0:
|
||||||
|
return r
|
||||||
|
|
||||||
|
if argv[0] == "merge":
|
||||||
|
r = merge(argv, realsvn)
|
||||||
if r >= 0:
|
if r >= 0:
|
||||||
return r
|
return r
|
||||||
|
|
||||||
@ -154,8 +183,7 @@ def main(argv):
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
if colorsvn != '':
|
if colorsvn != '':
|
||||||
Popen([colorsvn] + argv).wait()
|
realsvn = colorsvn
|
||||||
return 0
|
|
||||||
|
|
||||||
Popen([realsvn] + argv).wait()
|
Popen([realsvn] + argv).wait()
|
||||||
return 0
|
return 0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user