For bug #169500, detect when the cvs server puts /Attic/ inside the path and automat...
authorZac Medico <zmedico@gentoo.org>
Mon, 30 Jul 2007 06:56:23 +0000 (06:56 -0000)
committerZac Medico <zmedico@gentoo.org>
Mon, 30 Jul 2007 06:56:23 +0000 (06:56 -0000)
svn path=/main/branches/2.1.2.9/; revision=7504

bin/repoman

index cbc8234581beeb75ad0f4ab097bc2a109eaaf3c9..62129e802dfffb09b778e10c22853f5e80c16b93 100755 (executable)
@@ -1752,6 +1752,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