diff --git a/tools/repo-diff.py b/tools/repo-diff.py new file mode 100755 index 00000000..f4f7ddfb --- /dev/null +++ b/tools/repo-diff.py @@ -0,0 +1,92 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Copyright (C) 2005, TUBITAK/UEKAE +# +# This program is free software; you can redistribute it and/or modify it under +# the terms of the GNU General Public License as published by the Free +# Software Foundation; either version 2 of the License, or (at your option) +# any later version. +# +# Please read the COPYING file. + +import os +import sys +from pisi.specfile import SpecFile +from pisi.util import join_path + +def findPspec(folder): + pspecList = [] + for root, dirs, files in os.walk(folder): + if "pspec.xml" in files: + pspecList.append(root) + # dont walk into the versioned stuff + if ".svn" in dirs: + dirs.remove(".svn") + return pspecList + +def getVersion(pspecList): + sources = {} + for pspec in pspecList: + specFile = SpecFile(join_path(pspec, "pspec.xml")) + sources[specFile.source.name] = (specFile.source.version, specFile.source.release) + return sources + +def listIntersection(firstRepo, secondRepo): + keys = list(set(firstRepo.keys()).__and__(set(secondRepo.keys()))) + keys.sort() + for i in keys: + if firstRepo[i] != secondRepo[i]: + print " %s: %s (r%s) -> %s (r%s)" % (i, firstRepo[i][0], firstRepo[i][1], secondRepo[i][0], secondRepo[i][1]) + +def listComplement(firstRepo, secondRepo): + keys = list(set(firstRepo.keys()) - set(secondRepo.keys())) + keys.sort() + for i in keys: + print " %s" % i + +def usage(miniMe): + print """Usage: + %s pathToSvn component (ex: %s /home/caglar/svn/pardus/ system/devel) + """ % (miniMe, miniMe) + + sys.exit(1) + +if __name__ == "__main__": + try: + svnRoot = sys.argv[1] + except IndexError: + usage(sys.argv[0]) + + try: + postfix = sys.argv[2] + except IndexError: + postfix = "system/devel" + + tag = getVersion(findPspec(join_path(svnRoot, "tags/pardus-1.0/", postfix))) + stable = getVersion(findPspec(join_path(svnRoot,"stable/pardus-1/", postfix))) + devel = getVersion(findPspec(join_path(svnRoot, "devel/", postfix))) + + print "Tag --> Stable" + listIntersection(tag, stable) + print + + print "Tag has, Stable hasn't" + listComplement(tag, stable) + print + + print "Stable has, Tag hasn't" + listComplement(stable, tag) + print + + print "Stable --> Devel" + listIntersection(stable, devel) + print + + print "Stable has, Devel hasn't" + listComplement(stable, devel) + print + + print "Devel has, Stable hasn't" + listComplement(devel, stable) + print