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.")
+