summaryrefslogtreecommitdiffstats
path: root/pym
diff options
context:
space:
mode:
authorMarius Mauch <genone@gentoo.org>2008-05-13 22:33:58 +0000
committerMarius Mauch <genone@gentoo.org>2008-05-13 22:33:58 +0000
commit2ae3ea32b982d9855c4943cc6c54adbb9d227aea (patch)
treea40f4e4b789da54819d6e831c1afbc80677785a6 /pym
parent2541f19612d59e5804186d531ac659dea918ccee (diff)
downloadportage-2ae3ea32b982d9855c4943cc6c54adbb9d227aea.tar.gz
portage-2ae3ea32b982d9855c4943cc6c54adbb9d227aea.tar.bz2
portage-2ae3ea32b982d9855c4943cc6c54adbb9d227aea.zip
Add subversion support for repoman (patch by Fabien Groffen, http://archives.gentoo.org/gentoo-portage-dev/msg_b7080f212c3eb09c943a1ce5a7356f01.xml)
svn path=/main/trunk/; revision=10325
Diffstat (limited to 'pym')
-rw-r--r--pym/portage/sets/libs.py8
-rw-r--r--pym/repoman/utilities.py21
2 files changed, 21 insertions, 8 deletions
diff --git a/pym/portage/sets/libs.py b/pym/portage/sets/libs.py
index 4ab8a33fe..8159cc35f 100644
--- a/pym/portage/sets/libs.py
+++ b/pym/portage/sets/libs.py
@@ -37,7 +37,11 @@ class PreservedLibraryConsumerSet(LibraryConsumerSet):
if reg:
for libs in reg.getPreservedLibs().values():
for lib in libs:
- #print lib, self.dbapi.linkmap.findConsumers(lib)
+ if self.debug:
+ print lib
+ for x in sorted(self.dbapi.linkmap.findConsumers(lib)):
+ print " ", x
+ print "-"*40
consumers.update(self.dbapi.linkmap.findConsumers(lib))
else:
return
@@ -46,5 +50,5 @@ class PreservedLibraryConsumerSet(LibraryConsumerSet):
self._setAtoms(self.mapPathsToAtoms(consumers))
def singleBuilder(cls, options, settings, trees):
- return PreservedLibraryConsumerSet(trees["vartree"].dbapi)
+ return PreservedLibraryConsumerSet(trees["vartree"].dbapi, True)
singleBuilder = classmethod(singleBuilder)
diff --git a/pym/repoman/utilities.py b/pym/repoman/utilities.py
index 7666ba5d6..28df593cf 100644
--- a/pym/repoman/utilities.py
+++ b/pym/repoman/utilities.py
@@ -42,30 +42,39 @@ def detect_vcs_conflicts(options, vcs):
retval = commands.getstatusoutput("cvs -n up 2>&1 | " + \
"egrep '^[^\?] .*' | " + \
"egrep -v '^. .*/digest-[^/]+|^cvs server: .* -- ignored$'")
+ if vcs == 'svn':
+ logging.info("Performing a " + output.green("svn status -u") + \
+ " with a little magic grep to check for updates.")
+ retval = commands.getstatusoutput("svn status -u 2>&1 | " + \
+ "egrep -v '^. +.*/digest-[^/]+' | " + \
+ "head -n-1")
+ if vcs in ['cvs', 'svn']:
mylines = retval[1].splitlines()
myupdates = []
for line in mylines:
if not line:
continue
- if line[0] not in "UPMAR": # Updates,Patches,Modified,Added,Removed
+ if line[0] not in "UPMARD": # Updates,Patches,Modified,Added,Removed/Replaced(svn),Deleted(svn)
logging.error(red("!!! Please fix the following issues reported " + \
- "from cvs: ")+green("(U,P,M,A,R are ok)"))
+ "from cvs: ")+green("(U,P,M,A,R,D are ok)"))
logging.error(red("!!! Note: This is a pretend/no-modify pass..."))
logging.error(retval[1])
sys.exit(1)
- elif line[0] in "UP":
+ elif vcs == 'cvs' and line[0] in "UP":
myupdates.append(line[2:])
+ elif vcs == 'svn' and line[8] == '*':
+ myupdates.append(line[9:].lstrip(" 1234567890"))
if myupdates:
logging.info(green("Fetching trivial updates..."))
if options.pretend:
- logging.info("(cvs up "+" ".join(myupdates)+")")
+ logging.info("(" + vcs + " update " + " ".join(myupdates) + ")")
retval = os.EX_OK
else:
- retval = os.system("cvs up " + " ".join(myupdates))
+ retval = os.system(vcs + " update " + " ".join(myupdates))
if retval != os.EX_OK:
- logging.fatal("!!! cvs exited with an error. Terminating.")
+ logging.fatal("!!! " + cvs + " exited with an error. Terminating.")
sys.exit(retval)