* [gentoo-commits] proj/portage:repoman commit in: pym/repoman/modules/vcs/cvs/, pym/repoman/modules/vcs/, ...
@ 2016-02-07 18:55 Brian Dolbec
0 siblings, 0 replies; only message in thread
From: Brian Dolbec @ 2016-02-07 18:55 UTC (permalink / raw
To: gentoo-commits
commit: f8198d98b7d195b0b42fecf648022fd5bcd4e4a8
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: Sun Feb 7 18:32:59 2016 +0000
URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=f8198d98
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 15a0d04..20116db 100644
--- a/pym/repoman/actions.py
+++ b/pym/repoman/actions.py
@@ -131,7 +131,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)
@@ -570,56 +571,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.")
+
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2016-02-07 18:55 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-07 18:55 [gentoo-commits] proj/portage:repoman commit in: pym/repoman/modules/vcs/cvs/, pym/repoman/modules/vcs/, Brian Dolbec
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox