mirror of
				http://git.whoc.org.uk/git/password-manager.git
				synced 2025-10-31 19:27:34 +01:00 
			
		
		
		
	 f8da092f3d
			
		
	
	f8da092f3d
	
	
	
		
			
			This is an intermir commit to share what is going on with the development of the new /delta version.
		
			
				
	
	
		
			101 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env python
 | |
| # -*- coding: UTF-8 -*-
 | |
| 
 | |
| def repositoryWithPath (path):
 | |
| 	try:
 | |
| 		# pip install hgapi
 | |
| 		import hgapi
 | |
| 
 | |
| 		repo = hgapi.Repo(path)
 | |
| 		result = HgRepository(repo, path)
 | |
| 		repo.hg_status()
 | |
| 	except:
 | |
| 		try:
 | |
| 			from git import Repo
 | |
| 			repo = Repo(path)
 | |
| 			result = GitRepository(repo, path)
 | |
| 		except ImportError, exception:
 | |
| 			print "Failed to import git, please install http://gitorious.org/git-python"
 | |
| 			print "Use sudo apt-get install python-git for Ubuntu/Debian"
 | |
| 			print "Use sudo yum install GitPython for Fedora/RHEL/CentOS"
 | |
| 			print "Or manually running the following command: easy_install gitpython"
 | |
| 		except:
 | |
| 			result = SnapshotRepository('', path)
 | |
| 
 | |
| 
 | |
| 	return result
 | |
| 
 | |
| 
 | |
| #===================================================================
 | |
| 
 | |
| 
 | |
| class Repository(object):
 | |
| 
 | |
| 	def __init__ (self, repository, path):
 | |
| 		self.repository = repository
 | |
| 		self.path = path
 | |
| 
 | |
| 
 | |
| 	def revision (self):
 | |
| 		raise NotImplementedError()
 | |
| 	
 | |
| 
 | |
| 	def areTherePendingChanges (self):
 | |
| 		raise NotImplementedError()
 | |
| 
 | |
| 
 | |
| 	def version (self):
 | |
| 		result = self.revision()
 | |
| 		if self.areTherePendingChanges():
 | |
| 			result = '>>> ' + result + ' <<<'
 | |
| 
 | |
| 		return result
 | |
| 
 | |
| 
 | |
| #===================================================================
 | |
| 
 | |
| 
 | |
| class GitRepository(Repository):
 | |
| 	#	http://gitorious.org/git-python
 | |
| 
 | |
| 	def revision (self):
 | |
| 		try:
 | |
| 			return self.repository.head.commit.hexsha
 | |
| 		except:
 | |
| 			return self.repository.commits()[0].id
 | |
| 
 | |
| 
 | |
| 	def areTherePendingChanges (self):
 | |
| 		try:
 | |
| 			return self.repository.is_dirty()
 | |
| 		except TypeError, te:
 | |
| 			return self.repository.is_dirty
 | |
| 
 | |
| 
 | |
| 
 | |
| #===================================================================
 | |
| 
 | |
| 
 | |
| class HgRepository(Repository):
 | |
| 	##	http://mercurial.selenic.com/wiki/MercurialApi
 | |
| 	#	https://bitbucket.org/haard/hgapi
 | |
| 
 | |
| 	def revision (self):
 | |
| 		return 'hg: ' + str(self.repository['tip'].node)
 | |
| 
 | |
| 	def areTherePendingChanges (self):
 | |
| 		return not all(map(lambda fileList: len(fileList) == 0, self.repository.hg_status()))
 | |
| 
 | |
| 
 | |
| #===================================================================
 | |
| 
 | |
| 
 | |
| class SnapshotRepository(Repository):
 | |
| 
 | |
| 	def revision (self):
 | |
| 		return 'SNAPSHOT'
 | |
| 
 | |
|  
 | |
| 	def areTherePendingChanges (self):
 | |
| 		return False
 |