smart-live-rebuild / smartliverebuild / vcs /

#	vim:fileencoding=utf-8
# (c) 2011 Michał Górny <>
# Released under the terms of the 2-clause BSD license.

from . import RemoteVCSSupport, NonLiveEbuild, OtherEclass

class GitR3Support(RemoteVCSSupport):

	def __init__(self, *args, **kwargs):
		want_r2 = 'want_r2' in kwargs
		if want_r2:
			del kwargs['want_r2']

		RemoteVCSSupport.__init__(self, *args, **kwargs)
		if (self.env['EGIT_COMMIT']
				and self.env['EGIT_COMMIT'] != (self.env.get('EGIT_BRANCH') or HEAD)):
			raise NonLiveEbuild('EGIT_COMMIT set, package is not really a live one')
		self.repo_uris = self.env['EGIT_REPO_URI'].split()

		if want_r2 == bool(self.env['EGIT_MASTER']):
			raise OtherEclass()

	def __str__(self):
		return '%s [%s]' % (self.repo_uris[0],
				self.env.get('EGIT_BRANCH') or 'HEAD')

	def parseoutput(self, out):
		return out.split()[0]

	def savedrev(self):
		return self.env['EGIT_VERSION']

	def updatecmd(self):
		cmds = []
		for r in self.repo_uris:
			cmds.append('git ls-remote %s %s' % (
				r, self.env.get('EGIT_BRANCH') or 'HEAD'))
		return ' || '.join(cmds)
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.