commit: 076add53d2574584adaaf4f8f091d8e954d1c2ee Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org> AuthorDate: Sun Feb 7 18:32:59 2016 +0000 Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org> CommitDate: Thu Mar 10 23:47:35 2016 +0000 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=076add53
repoman: Migrate thick_manifest to the vcs Changes classes pym/repoman/actions.py | 53 ++-------------------------------- pym/repoman/modules/vcs/changes.py | 5 ++++ pym/repoman/modules/vcs/cvs/changes.py | 19 ++++++++++++ pym/repoman/modules/vcs/svn/changes.py | 42 +++++++++++++++++++++++++++ 4 files changed, 68 insertions(+), 51 deletions(-) diff --git a/pym/repoman/actions.py b/pym/repoman/actions.py index 7a29635..f477aec 100644 --- a/pym/repoman/actions.py +++ b/pym/repoman/actions.py @@ -132,7 +132,8 @@ class Actions(object): print() elif not self.repo_settings.repo_config.thin_manifest: logging.debug("perform: Calling thick_manifest()") - self.thick_manifest(myupdates, myheaders, no_expansion, expansion) + self.vcs_settings.changes.thick_manifest(myupdates, myheaders, + no_expansion, expansion) logging.info("myupdates: %s", myupdates) logging.info("myheaders: %s", myheaders) @@ -581,56 +582,6 @@ class Actions(object): pass - def thick_manifest(self, myupdates, myheaders, no_expansion, expansion): - if self.vcs_settings.vcs == 'cvs': - headerstring = "'\$(Header|Id).*\$'" - elif self.vcs_settings.vcs == "svn": - svn_keywords = dict((k.lower(), k) for k in [ - "Rev", - "Revision", - "LastChangedRevision", - "Date", - "LastChangedDate", - "Author", - "LastChangedBy", - "URL", - "HeadURL", - "Id", - "Header", - ]) - - for myfile in myupdates: - - # for CVS, no_expansion contains files that are excluded from expansion - if self.vcs_settings.vcs == "cvs": - if myfile in no_expansion: - continue - - # for SVN, expansion contains files that are included in expansion - elif self.vcs_settings.vcs == "svn": - if myfile not in expansion: - continue - - # Subversion keywords are case-insensitive - # in svn:keywords properties, - # but case-sensitive in contents of files. - enabled_keywords = [] - for k in expansion[myfile]: - keyword = svn_keywords.get(k.lower()) - if keyword is not None: - enabled_keywords.append(keyword) - - headerstring = "'\$(%s).*\$'" % "|".join(enabled_keywords) - - myout = repoman_getstatusoutput( - "egrep -q %s %s" % (headerstring, portage._shell_quote(myfile))) - if myout[0] == 0: - myheaders.append(myfile) - - print("%s have headers that will change." % green(str(len(myheaders)))) - print( - "* Files with headers will" - " cause the manifests to be changed and committed separately.") def clear_attic(self, myheaders): diff --git a/pym/repoman/modules/vcs/changes.py b/pym/repoman/modules/vcs/changes.py index 76ad591..77d7dc1 100644 --- a/pym/repoman/modules/vcs/changes.py +++ b/pym/repoman/modules/vcs/changes.py @@ -69,3 +69,8 @@ class ChangesBase(object): def expansion(self): '''Override this function as needed''' return {} + + def thick_manifest(self, myupdates, myheaders, no_expansion, expansion): + '''Create a thick manifest''' + pass + diff --git a/pym/repoman/modules/vcs/cvs/changes.py b/pym/repoman/modules/vcs/cvs/changes.py index 3ef91cc..6accd4a 100644 --- a/pym/repoman/modules/vcs/cvs/changes.py +++ b/pym/repoman/modules/vcs/cvs/changes.py @@ -41,3 +41,22 @@ class Changes(ChangesBase): return self._unadded self._unadded = portage.cvstree.findunadded(self._tree, recursive=1, basedir="./") return self._unadded + def thick_manifest(self, myupdates, myheaders, no_expansion, expansion): + headerstring = "'\$(Header|Id).*\$'" + + for myfile in myupdates: + + # for CVS, no_expansion contains files that are excluded from expansion + if myfile in no_expansion: + continue + + myout = repoman_getstatusoutput( + "egrep -q %s %s" % (headerstring, portage._shell_quote(myfile))) + if myout[0] == 0: + myheaders.append(myfile) + + print("%s have headers that will change." % green(str(len(myheaders)))) + print( + "* Files with headers will" + " cause the manifests to be changed and committed separately.") + diff --git a/pym/repoman/modules/vcs/svn/changes.py b/pym/repoman/modules/vcs/svn/changes.py index 9a0efbf..6b25a21 100644 --- a/pym/repoman/modules/vcs/svn/changes.py +++ b/pym/repoman/modules/vcs/svn/changes.py @@ -64,3 +64,45 @@ class Changes(ChangesBase): if elem.startswith("?") or elem.startswith("I")] del svnstatus return self._unadded + + def thick_manifest(self, myupdates, myheaders, no_expansion, expansion): + svn_keywords = dict((k.lower(), k) for k in [ + "Rev", + "Revision", + "LastChangedRevision", + "Date", + "LastChangedDate", + "Author", + "LastChangedBy", + "URL", + "HeadURL", + "Id", + "Header", + ]) + + for myfile in myupdates: + # for SVN, expansion contains files that are included in expansion + if myfile not in expansion: + continue + + # Subversion keywords are case-insensitive + # in svn:keywords properties, + # but case-sensitive in contents of files. + enabled_keywords = [] + for k in expansion[myfile]: + keyword = svn_keywords.get(k.lower()) + if keyword is not None: + enabled_keywords.append(keyword) + + headerstring = "'\$(%s).*\$'" % "|".join(enabled_keywords) + + myout = repoman_getstatusoutput( + "egrep -q %s %s" % (headerstring, portage._shell_quote(myfile))) + if myout[0] == 0: + myheaders.append(myfile) + + print("%s have headers that will change." % green(str(len(myheaders)))) + print( + "* Files with headers will" + " cause the manifests to be changed and committed separately.") +