For bug #169500, detect when the cvs server puts /Attic/ inside the $Header path...
authorZac Medico <zmedico@gentoo.org>
Sat, 21 Jul 2007 11:36:20 +0000 (11:36 -0000)
committerZac Medico <zmedico@gentoo.org>
Sat, 21 Jul 2007 11:36:20 +0000 (11:36 -0000)
svn path=/main/branches/2.1.2/; revision=7341

bin/repoman

index b68d3c99a1dced77f055c191cf97eb171f6353eb..081c8b021db058732c0fd1a0e8c193160f50cfb2 100755 (executable)
@@ -1790,6 +1790,23 @@ else:
                        else:
                                raise portage_exception.PortageException("!!! gpg exited with '" + str(rValue) + "' status")
 
+       # When files are removed and re-added, the cvs server will put /Attic/
+       # inside the $Header path. This code detects the problem and corrects it
+       # so that the Manifest will generate correctly. See bug #169500.
+       from portage_util import write_atomic
+       cvs_header = re.compile(r'^#\s*\$Header.*\$$')
+       for x in myheaders:
+               f = open(x)
+               mylines = f.readlines()
+               f.close()
+               modified = False
+               for i, line in enumerate(mylines):
+                       if cvs_header.match(line) and "/Attic/" in line:
+                               mylines[i] = line.replace("/Attic/", "/")
+                               modified = True
+               if modified:
+                       write_atomic(x, "".join(mylines))
+
        manifest_commit_required = True
        if myheaders or myupdates or myremoved or mynew:
                myfiles=myheaders+myupdates+myremoved+mynew