Add the new version of the nightbuilder client
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@11954 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
93
tools/nightbuilder/svn.py
Normal file
93
tools/nightbuilder/svn.py
Normal file
@@ -0,0 +1,93 @@
|
||||
#!/bin/python
|
||||
# From Supertuxkart SVN revision $Revision$
|
||||
# Copyright (C) 2012 Jean-manuel clemencon (samuncle)
|
||||
# Class for the SVN
|
||||
################################################################################
|
||||
|
||||
import os
|
||||
from subprocess import check_output
|
||||
from utils import *
|
||||
|
||||
class Svn:
|
||||
"""
|
||||
Interface for the SVN
|
||||
"""
|
||||
|
||||
__svnInfoLocal = "" # info of the local repo
|
||||
__svnInfoLast = "" # info when it's updated
|
||||
__localRev = 0 # the local revision number
|
||||
__lastRev = 0 # the updated revision number
|
||||
__isUp = False # is the repo has been already updated
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
def __init__ (self, workingDir):
|
||||
"""
|
||||
Constructor of the svn class
|
||||
"""
|
||||
# local copy for the configuration
|
||||
self.__workingDir = workingDir
|
||||
|
||||
# cd to the working dir and get info from current revision
|
||||
changeDir = Cdir(self.__workingDir)
|
||||
self.__svnInfoLocal = check_output(["svn info"], shell=True)
|
||||
del changeDir
|
||||
|
||||
# exctract the local revision
|
||||
self.__localRev = self.__parseInfo(self.__svnInfoLocal)
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
def __parseInfo(self, strIn):
|
||||
"""
|
||||
Parse info to extract the revision
|
||||
"""
|
||||
workingData = strIn.split("\n")
|
||||
for i in workingData:
|
||||
if "Revision: " in i:
|
||||
return int(i.split("Revision: ")[1])
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
def update(self):
|
||||
"""
|
||||
update the repository (svn up)
|
||||
"""
|
||||
# cd to the directory and update the svn
|
||||
changeDir = Cdir(self.__workingDir)
|
||||
self.__svnInfoLocal = check_output(["svn up"], shell=True)
|
||||
self.__svnInfoLast = check_output(["svn info"], shell=True)
|
||||
del changeDir
|
||||
|
||||
# exctract the last revision
|
||||
self.__lastRev = self.__parseInfo(self.__svnInfoLast)
|
||||
|
||||
# now we have updated the SVN
|
||||
self.__isUp = True
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
def getLocalRevision(self):
|
||||
"""
|
||||
return the local revision
|
||||
"""
|
||||
return self.__localRev
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
def getLastRevision(self):
|
||||
"""
|
||||
return the last revision
|
||||
"""
|
||||
if not (self.__isUp):
|
||||
raise Exception ("The revision has not been updated.")
|
||||
return self.__lastRev
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
def getIsChanged(self):
|
||||
"""
|
||||
return true if revision has changed
|
||||
"""
|
||||
if not (self.__isUp):
|
||||
raise Exception ("The revision has not been updated.")
|
||||
|
||||
if (self.__lastRev != self.__localRev):
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
Reference in New Issue
Block a user