File: makerelease.py

package info (click to toggle)
bitpim 1.0.7%2Bdfsg1-2
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 31,384 kB
  • ctags: 64,877
  • sloc: python: 267,746; cpp: 2,076; perl: 600; ansic: 409; sh: 231; makefile: 142; sed: 1
file content (67 lines) | stat: -rw-r--r-- 2,730 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/usr/bin/env python
# $Id: makebranch.py 2868 2006-03-05 03:39:32Z rogerb $

# Check subversion is on the path
import os, sys, xml.dom.minidom
if os.popen("svn help", "r").read().find("proplist")<0:
    print "You need to have the Subversion binaries available.  A good start is"
    print "http://subversion.tigris.org/project_packages.html"
    sys.exit(1)


# check to see we are at a top level directory
topdirs=('buildrelease', 'dev-doc', 'examples', 'experiments', 'help', 'helpers', 'packaging', 'resources', 'scripts', 'src')
for d in topdirs:
    if not os.path.isdir(d):
        print "There should be a directory named",d
        sys.exit(2)

# sys.argv[1] is the branch target
if len(sys.argv)!=2:
    print "The one and only  argument needs to be the new version number."
    print "One example would be 0.8.09"
    sys.exit(3)
release=sys.argv[1]

branchtarget="https://bitpim.svn.sourceforge.net/svnroot/bitpim/releases/"+sys.argv[1]

branchdirs=topdirs

def run(cmd):
    print cmd
    res=os.system(cmd)
    if res:
        print "Returned code",res,"! Aborting!"
        sys.exit(res)


externals=[]
copies=[]

metadata=xml.dom.minidom.parseString(os.popen("svn info --xml .", "r").read())
toprev=int(metadata.documentElement.getElementsByTagName("entry")[0].getAttribute("revision"))
topurl=str(metadata.documentElement.getElementsByTagName("entry")[0].getElementsByTagName("url")[0].firstChild.nodeValue)
toproot=str(metadata.documentElement.getElementsByTagName("entry")[0].getElementsByTagName("repository")[0].getElementsByTagName("root")[0].firstChild.nodeValue)
assert topurl.startswith(toproot)
toppath=topurl[len(toproot):]

for d in topdirs:
    metadata=xml.dom.minidom.parseString(os.popen("svn info --xml "+d, "r").read())
    url=str(metadata.documentElement.getElementsByTagName("entry")[0].getElementsByTagName("url")[0].firstChild.nodeValue)
    rev=int(metadata.documentElement.getElementsByTagName("entry")[0].getAttribute("revision"))
    root=str(metadata.documentElement.getElementsByTagName("entry")[0].getElementsByTagName("repository")[0].getElementsByTagName("root")[0].firstChild.nodeValue)
    assert url.startswith(root)
    path=url[len(root):]
    
    # same rigmarole for the revision number
    rev=int(metadata.documentElement.getElementsByTagName("entry")[0].getAttribute("revision"))
    
    # we want to branch this one - dir, target, rev, path
    copies.append( (d, "/".join([branchtarget, d]), rev, "/".join([toppath, d])) )

cmd='svn mkdir -m "making a release from rev %d of %s" %s' % (toprev, toppath, branchtarget)
run(cmd)
for src,dest,rev,path in copies:
    cmd='svn copy -m "release %s from rev %d of %s" %s %s' % (release, rev, path, src, dest)
    run(cmd)