2010-03-25 6 views
2

Pour une raison quelconque, nous ne pouvons pas mettre à jour le SVN dans certaines machines de construction. La version svn installée est 1.3.x. Mais l'esclave Hudson a utilisé 1.6 pour créer une caisse. Cela signifie que nous ne pouvons pas courir « info svn » sur les checkouts:Obtenir svn revision sans un binaire svn approprié

$ svnversion 
subversion/libsvn_wc/questions.c:110: (apr_err=155021) 
svn: This client is too old to work with working copy '.'; please get a newer Subversion client 
$ svn info 
subversion/libsvn_wc/questions.c:110: (apr_err=155021) 
svn: This client is too old to work with working copy '.'; please get a newer Subversion client 
$ 

Ma question, est-il un moyen d'accéder au numéro de révision sans avoir à invoquer le binaire svn? Vous savez, comme essayer de regarder dans le répertoire .svn /? Supposons que la caisse utilise la dernière version de svn (1.6).

Répondre

1

Je trouve une réponse à cela en regardant setuptools code source (setuptools/command/egg_info.py)

 entries_file = join(dirname(__file__), '.svn', 'entries') 
     assert exists(entries_file), '%s is missing' % entries_file 
     with open(entries_file) as f: 
      data = f.read() 
      # parsing code inherited from setuptools/command/egg_info.py 
      if data.startswith('<?xml'): 
       localrev = max([int(m.group(1)) for m in revre.finditer(data)]+[0]) 
      else: 
       if data<8: 
        raise Exception, "unrecognized .svn/entries format" 

       data = map(str.splitlines,data.split('\n\x0c\n')) 
       del data[0][0] # get rid of the '8' or '9' 
       localrev = max([int(d[9]) for d in data if len(d)>9 and d[9]]+[0]) 
+0

Whoa, il est encore commodément écrit en python (j'ai besoin pour un système de construction basé SCons, je ne veux pas porter pysvn ou similaire en tant que dépendance). Sridhar, merci pour vos recherches :) – Septagram

+0

N.B. et, échoue commodément pour SVN 1.7+ –

Questions connexes