#!/usr/bin/env python
# -*- coding: UTF-8 -*-


def repositoryWithPath (path):
	try:
		from dulwich.repo import Repo

		repo = Repo(path)
		result = GitRepository(repo, path)
	except ImportError:
		print "Failed to import dulwich, please install http://www.samba.org/~jelmer/dulwich/"
	except:
		from mercurial import ui, hg

		repo = hg.repository(ui.ui(), path)
		result = HgRepository(repo, 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 + ' <<<'

		# print "VERSION: " + result
		return result


#===================================================================


class GitRepository(Repository):

	def revision (self):
		return self.repository.refs['HEAD']


	def areTherePendingChanges (self):
		return repository.is_dirty()


#===================================================================


class HgRepository(Repository):
	#	http://mercurial.selenic.com/wiki/MercurialApi

	def revision (self):
		return 'hg:' + str(self.repository['tip'])
	

	def areTherePendingChanges (self):
		# TODO: FIXME: repository.status() does not report 'unknown(?)' files. :(
		return not all(map(lambda fileList: len(fileList) == 0, self.repository.status()))


#===================================================================

@@ -89,20 +89,11 @@
 rom 
-dulwich.repo
+git
  imp
@@ -206,23 +206,19 @@
  import 
-dulwich
+git
 , please
@@ -237,38 +237,32 @@
 p://
-www.samba.org/~jelmer/dulwich/
+gitorious.org/git-python
 %22%0A%09e
@@ -1032,20 +1032,26 @@
 ory.
-refs%5B'HEAD'%5D
+head.commit.hexsha
 %0A%0A%0A%09
@@ -1094,16 +1094,21 @@
 %09return 
+self.
 reposito

switch from dulwich to git-python