Patrick Mézard committed db7526e

csharp: tag after parent of -SNAPSHOT version

The assembly version is now based on the most recent non-SNAPSHOT pom.xml
ancestor. For instance, 4.6-SNAPSHOT will now be instead of

Comments (0)

Files changed (2)


 // You can specify all the values or you can default the Build and Revision Numbers 
 // by using the '*' as shown below:
-// [assembly: AssemblyVersion("")]
-[assembly: AssemblyVersion("")]
-[assembly: AssemblyFileVersion("")]
+// [assembly: AssemblyVersion("")]
+[assembly: AssemblyVersion("")]
+[assembly: AssemblyFileVersion("")]


 # Update assembly version number based on Java pom.xml file
-import os, re, subprocess
+import os, sys, re, subprocess
 def haschanges(rootdir):
     p = subprocess.Popen(['hg', '-R', rootdir, 'id', '-n'],
     stdout = p.communicate()[0]
     return stdout.strip().endswith('+')
-def getjavaver(rootdir):
-    # Extract from pom file
-    pompath = os.path.join(rootdir, 'java', 'pom.xml')
-    data = file(pompath, 'rb').read()
-    m ='<version>(\d+.\d+)(?:-SNAPSHOT)?</version>', data)
-    if not m:
-        raise Exception('cannot extract version number from pom file')
-    return tuple(int(p) for p in'.'))[:2]
-asmfile = 'csharp/PhoneNumbers/Properties/AssemblyInfo.cs'
-def getcsharpprevbuild(rootdir):
-    asmpath = os.path.join(rootdir, asmfile)
-    p = subprocess.Popen(['hg', 'cat', '--rev', '.', asmpath],
+def hgcat(rootdir, path, rev):
+    path = os.path.join(rootdir, path)
+    p = subprocess.Popen(['hg', 'cat', '--rev', rev, path],
     stdout = p.communicate()[0]
     if p.returncode:
         raise Exception('hg cat failed')
+    return stdout
+def readjavaver(rootdir, rev):
+    # Extract from pom file
+    data = hgcat(rootdir, 'java/pom.xml', rev)
+    m ='<version>(\d+.\d+)(-SNAPSHOT)?</version>', data)
+    if not m:
+        raise Exception('cannot extract version number from pom file')
+    snapshot = bool(
+    return tuple(int(p) for p in'.'))[:2], snapshot
+def getjavaver(rootdir):
+    rev = '.'
+    while True:
+        ver, snapshot = readjavaver(rootdir, rev)
+        if not snapshot:
+            return ver
+        rev = 'p1(%s)' % rev
+asmfile = 'csharp/PhoneNumbers/Properties/AssemblyInfo.cs'
+def getcsharpprevbuild(rootdir):
+    stdout = hgcat(rootdir, asmfile, '.')
     m ='AssemblyVersion\("(\d+\.\d+\.\d+\.\d+)', stdout)
     if not m:
         raise Exception('cannot extract version from AssemblyInfo.cs')
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.