0efdf0744a
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@11954 178a84e3-b1eb-0310-8ba1-8eac791a3b58
94 lines
3.0 KiB
Python
94 lines
3.0 KiB
Python
#!/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
|
|
|