def testCloneModifyPush(self): new_repo = LocalRepository(utils.get_temporary_location()) new_repo.clone(self.repo) self.assertReposEqual(self.repo, new_repo) utils.commit_change(new_repo) new_repo.push() self.repo.resetHard() self.assertReposEqual(self.repo, new_repo) utils.delete_repository(new_repo)
def testCloneModifyPush(self): new_repo = LocalRepository(utils.get_temporary_location()) new_repo.clone(self.repo) #checkout a different branch to comply with git 1.7.0 prev_branch = self.repo.getCurrentBranch() self.repo.checkout(self.repo.createBranch('temp')) self.assertReposEqual(self.repo, new_repo) utils.commit_change(new_repo) new_repo.push() self.repo.checkout(prev_branch) self.assertReposEqual(self.repo, new_repo) utils.delete_repository(new_repo)
def setUp(self): path1 = utils.get_temporary_location() path2 = utils.get_temporary_location() path2 = os.path.join(path2, "repo") self.repo1 = LocalRepository(path1) self.repo1.init() for i in range(10): with open(os.path.join(self.repo1.path, "file_%s.txt" % i), "wb") as output: print >>output, "This is file", i self.repo1.addAll() self.repo1.commit(message="init") self.repo2 = LocalRepository(path2) self.repo2.clone(self.repo1) self.assertTrue(os.path.isdir(self.repo2.path))
def setUp(self): path1 = utils.get_temporary_location() path2 = utils.get_temporary_location() path2 = os.path.join(path2, "repo") self.repo1 = LocalRepository(path1) self.repo1.init() for i in range(10): with open(os.path.join(self.repo1.path, "file_%s.txt" % i), "wb") as output: print >> output, "This is file", i self.repo1.addAll() self.repo1.commit(message="init") self.repo2 = LocalRepository(path2) self.repo2.clone(self.repo1) self.assertTrue(os.path.isdir(self.repo2.path))
def testCloneRebaseModifyPush(self): new_repo = LocalRepository(utils.get_temporary_location()) new_repo.clone(self.repo) prev_branch = self.repo.getCurrentBranch() #checkout a different branch to comply with git 1.7.0 self.repo.checkout(self.repo.createBranch('temp')) self.assertReposEqual(self.repo, new_repo) utils.commit_change(self.repo) utils.commit_change(new_repo) new_repo.fetch() new_repo.rebase('origin/master') new_repo.push() self.repo.checkout(prev_branch) self.assertReposEqual(self.repo, new_repo) utils.delete_repository(new_repo)
class EmptyRepositoryTest(unittest.TestCase): def setUp(self): self.dirname = get_temporary_location() self.repo = LocalRepository(self.dirname) self.assertFalse(os.path.exists(self.dirname)) self.assertFalse(self.repo.isValid()) def tearDown(self): if os.path.exists(self.dirname): delete_repository(self.repo)
def create_repo(): returned = LocalRepository(get_temporary_location()) returned.init() for i in range(10): filename = "file_%s.txt" % i full_filename = os.path.join(returned.path, filename) with open(full_filename, "wb") as f: print >> f, "initial content" returned.add(filename) returned.commit(message="initial") return returned
def get_app_git_revision(): git_info = {'branch': 'Unknown', 'revision': 'Unknown', 'updated': 'Unknown'} try: from git import LocalRepository from datetime import datetime repo = LocalRepository(ABSOLUTE_PROJECT_PATH) branch = repo.getCurrentBranch() rev = repo.getHead() updated = rev.getDate() git_info.update({ 'repo': repo, 'branch': branch, 'revision': rev.name, 'rev': rev.hash[:10], 'updated': datetime.utcfromtimestamp(updated), }) except Exception, e: print e
def __init__(self, rootdir=None): if not rootdir: self.rootdir = Config().get("working_repo") else: self.rootdir = rootdir # gitpy hardcodes the git command without a path, so it's using PATH to find it. We need to set the path for # git. dir = dirname(Config().get('git')) environ['PATH'] = "%s:%s" % (dir, environ['PATH']) repo = LocalRepository(self.rootdir) self.repo = repo
def setUp(self): self.dirname = get_temporary_location() self.repo = LocalRepository(self.dirname) self.assertFalse(os.path.exists(self.dirname)) self.assertFalse(self.repo.isValid())
class CollaborationTest(unittest.TestCase): def setUp(self): path1 = utils.get_temporary_location() path2 = utils.get_temporary_location() path2 = os.path.join(path2, "repo") self.repo1 = LocalRepository(path1) self.repo1.init() for i in range(10): with open(os.path.join(self.repo1.path, "file_%s.txt" % i), "wb") as output: print >> output, "This is file", i self.repo1.addAll() self.repo1.commit(message="init") self.repo2 = LocalRepository(path2) self.repo2.clone(self.repo1) self.assertTrue(os.path.isdir(self.repo2.path)) def tearDown(self): utils.delete_repository(self.repo1) utils.delete_repository(self.repo2) def testRemotePushBranches(self): b = self.repo2.createBranch("branch") self.repo1.createBranch('remote_branch') self.repo2.fetch() remote_branch = self.repo2.getRemoteByName('origin').getBranchByName( 'remote_branch') b.setRemoteBranch(remote_branch) self.assertEquals(b.getRemoteBranch(), remote_branch) b.setRemoteBranch(None) self.assertEquals(b.getRemoteBranch(), None) # try setting to None multiple times b.setRemoteBranch(None) def testCollaboration(self): new_file_base_name = "new_file.txt" new_filename = os.path.join(self.repo1.path, new_file_base_name) with open(new_filename, "wb") as f: print >> f, "hello there!" self.assertTrue(new_file_base_name in self.repo1.getUntrackedFiles()) self.repo1.addAll() self.assertTrue( any(f.filename == new_file_base_name for f in self.repo1.getStagedFiles())) c = self.repo1.commit(message="add file") self.assertFalse( os.path.exists(os.path.join(self.repo2.path, new_file_base_name))) self.repo2.pull() self.assertTrue( os.path.exists(os.path.join(self.repo2.path, new_file_base_name))) self.assertTrue(c in self.repo2) def testRemoteBranchDeletion(self): self.repo1.createBranch("testme") self.repo2.fetch() remote_branch = self.repo2.getRemoteByName("origin").getBranchByName( "testme") self.assertEquals(remote_branch.getHead(), self.repo1.getBranchByName("testme").getHead()) remote_branch.delete() try: self.repo1.getBranchByName("testme") except NonexistentRefException: pass else: self.fail("Did not fail!")
class CollaborationTest(unittest.TestCase): def setUp(self): path1 = utils.get_temporary_location() path2 = utils.get_temporary_location() path2 = os.path.join(path2, "repo") self.repo1 = LocalRepository(path1) self.repo1.init() for i in range(10): with open(os.path.join(self.repo1.path, "file_%s.txt" % i), "wb") as output: print >>output, "This is file", i self.repo1.addAll() self.repo1.commit(message="init") self.repo2 = LocalRepository(path2) self.repo2.clone(self.repo1) self.assertTrue(os.path.isdir(self.repo2.path)) def tearDown(self): utils.delete_repository(self.repo1) utils.delete_repository(self.repo2) def testRemotePushBranches(self): b = self.repo2.createBranch("branch") self.repo1.createBranch('remote_branch') self.repo2.fetch() remote_branch = self.repo2.getRemoteByName('origin').getBranchByName('remote_branch') b.setRemoteBranch(remote_branch) self.assertEquals(b.getRemoteBranch(), remote_branch) b.setRemoteBranch(None) self.assertEquals(b.getRemoteBranch(), None) # try setting to None multiple times b.setRemoteBranch(None) def testCollaboration(self): new_file_base_name = "new_file.txt" new_filename = os.path.join(self.repo1.path, new_file_base_name) with open(new_filename, "wb") as f: print >> f, "hello there!" self.assertTrue(new_file_base_name in self.repo1.getUntrackedFiles()) self.repo1.addAll() self.assertTrue(any(f.filename == new_file_base_name for f in self.repo1.getStagedFiles())) c = self.repo1.commit(message="add file") self.assertFalse(os.path.exists(os.path.join(self.repo2.path, new_file_base_name))) self.repo2.pull() self.assertTrue(os.path.exists(os.path.join(self.repo2.path, new_file_base_name))) self.assertTrue(c in self.repo2) def testRemoteBranchDeletion(self): self.repo1.createBranch("testme") self.repo2.fetch() remote_branch = self.repo2.getRemoteByName("origin").getBranchByName("testme") self.assertEquals(remote_branch.getHead(), self.repo1.getBranchByName("testme").getHead()) remote_branch.delete() try: self.repo1.getBranchByName("testme") except NonexistentRefException: pass else: self.fail("Did not fail!")
def testAddingRemotes(self): new_repo = LocalRepository(utils.get_temporary_location()) new_repo.init() with open(os.path.join(new_repo.path, "some_file"), "wb") as f: print >> f, "new file" new_repo.addAll() new_repo.commit(message="initial change") REMOTE_NAME = 'remote' remote = new_repo.addRemote(REMOTE_NAME, self.repo.path) self.assertEquals(remote.name, REMOTE_NAME) self.assertEquals(remote.url, self.repo.path) self.assertFalse(new_repo.containsCommit(self.repo.getHead())) remote.fetch() remote.prune() self.assertTrue(new_repo.containsCommit(self.repo.getHead())) branches = list(remote.getBranches()) self.assertTrue(len(branches) > 0) for branch in branches: self.assertTrue(type(branch in new_repo.getHead()) is bool)