def testGitShare(self): shareBase = os.path.join(self.tmpdir, 'git-repos') rev = git.git(self.repodir, self.wc, shareBase=shareBase) shareDir = os.path.join(shareBase, git.get_repo_name(self.repodir)) self.assertEquals(rev, self.revisions[-1]) # We should see all the revisions revs = getRevisions( self.wc, branches=['origin/master', 'origin/branch2']) shared_revs = getRevisions( shareDir, branches=['origin/master', 'origin/branch2']) self.assertEquals(revs, shared_revs) self.assertEquals(revs, self.revisions) # Update to a different rev rev = git.git(self.repodir, self.wc, revision=self.revisions[0], shareBase=shareBase) self.assertEquals(rev, self.revisions[0]) self.assertFalse(os.path.exists(os.path.join(self.wc, 'newfile'))) # Add a commit to the original repo run_cmd(['touch', 'newfile'], cwd=self.repodir) run_cmd(['git', 'add', 'newfile'], cwd=self.repodir) run_cmd(['git', 'commit', '-q', '-m', 'add newfile'], cwd=self.repodir) new_rev = getRevisions(self.repodir)[-1] # Update to the new rev rev = git.git( self.repodir, self.wc, revision=new_rev, shareBase=shareBase) self.assertEquals(rev, new_rev) self.assertTrue(os.path.exists(os.path.join(self.wc, 'newfile')))
def testGitTag(self): rev = git.git(self.repodir, self.wc) self.assertEquals(rev, self.revisions[-1]) # Now try and update to a tag rev = git.git(self.repodir, self.wc, revision="TAG1") self.assertEquals(rev, self.revisions[0])
def testClean(self): git.git(self.repodir, self.wc) try: f = open(os.path.join(self.wc, 'blaaah'), 'w') f.write('blah') finally: if not f.closed: f.close() git.clean(self.wc) self.assertFalse(os.path.exists(os.path.join(self.wc, 'blaaah')))
def testGitCleanDest(self): rev = git.git(self.repodir, self.wc) try: f = open(os.path.join(self.wc, 'blaaah'), 'w') f.write('blah') finally: if not f.closed: f.close() rev = git.git(self.repodir, self.wc, clean_dest=True) self.assertFalse(os.path.exists(os.path.join(self.wc, 'blaaah')))
def testGit(self): rev = git.git(self.repodir, self.wc) self.assertEquals(rev, self.revisions[-1]) self.assertEquals(getRevisions(self.wc, branches=[ 'origin/master', 'origin/branch2']), self.revisions) self.assertTrue(os.path.exists(os.path.join(self.wc, 'hello.txt'))) self.assertTrue("Is this thing on" in open( os.path.join(self.wc, 'hello.txt')).read()) # Switch branches, make sure we get the right content rev = git.git(self.repodir, self.wc, refname='branch2') self.assertEquals(rev, self.revisions[1]) self.assertFalse("Is this thing on" in open( os.path.join(self.wc, 'hello.txt')).read())
def testGit(self): rev = git.git(self.repodir, self.wc) self.assertEquals(rev, self.revisions[-1]) self.assertEquals( getRevisions(self.wc, branches=['origin/master', 'origin/branch2']), self.revisions) self.assertTrue(os.path.exists(os.path.join(self.wc, 'hello.txt'))) self.assertTrue("Is this thing on" in open( os.path.join(self.wc, 'hello.txt')).read()) # Switch branches, make sure we get the right content rev = git.git(self.repodir, self.wc, refname='branch2') self.assertEquals(rev, self.revisions[1]) self.assertFalse("Is this thing on" in open( os.path.join(self.wc, 'hello.txt')).read())
def testGitBadRev(self): rev = git.git(self.repodir, self.wc) self.assertEquals(rev, self.revisions[-1]) # Now try and update to a bad revision self.assertRaises(subprocess.CalledProcessError, git.git, self.repodir, self.wc, revision="badrev")
def testGitBadDest(self): # Create self.wc without .git os.makedirs(self.wc) rev = git.git(self.repodir, self.wc) self.assertEquals(rev, self.revisions[-1]) self.assertTrue(os.path.exists(os.path.join(self.wc, 'hello.txt'))) self.assertTrue("Is this thing on" in open( os.path.join(self.wc, 'hello.txt')).read())
def testGitRev(self): rev = git.git(self.repodir, self.wc) self.assertEquals(rev, self.revisions[-1]) # Update to a different rev rev = git.git(self.repodir, self.wc, revision=self.revisions[1]) self.assertEquals(rev, self.revisions[1]) # Make a new commit in repodir run_cmd(['touch', 'newfile'], cwd=self.repodir) run_cmd(['git', 'add', 'newfile'], cwd=self.repodir) run_cmd(['git', 'commit', '-q', '-m', 'add newfile'], cwd=self.repodir) new_rev = getRevisions(self.repodir)[-1] rev = git.git(self.repodir, self.wc, revision=new_rev) self.assertEquals(new_rev, rev)
def testGitMirrors(self): # Create a bad mirror and a good mirror mirror1 = os.path.join(self.tmpdir, 'mirror1') mirror2 = os.path.join(self.tmpdir, 'mirror2') git.git(self.repodir, mirror2, update_dest=False) rev = git.git(self.repodir, self.wc, mirrors=[mirror1, mirror2]) self.assertEquals(rev, self.revisions[-1]) # Add a commit to the mirror run_cmd(['touch', 'newfile'], cwd=mirror2) run_cmd(['git', 'add', 'newfile'], cwd=mirror2) run_cmd(['git', 'commit', '-q', '-m', 'add newfile'], cwd=mirror2) new_rev = getRevisions(mirror2)[-1] # Now clone using the mirror. We should get the new commit that's in # the mirror rev = git.git(self.repodir, self.wc, mirrors=[mirror1, mirror2]) self.assertEquals(rev, new_rev)
def testGitBadDest(self): # Create self.wc without .git os.makedirs(self.wc) self.assertFalse(git.is_git_repo(self.wc)) rev = git.git(self.repodir, self.wc) self.assertEquals(rev, self.revisions[-1]) self.assertTrue(os.path.exists(os.path.join(self.wc, 'hello.txt'))) self.assertTrue("Is this thing on" in open( os.path.join(self.wc, 'hello.txt')).read())
def testGitShare(self): shareBase = os.path.join(self.tmpdir, 'git-repos') rev = git.git(self.repodir, self.wc, shareBase=shareBase) shareDir = os.path.join(shareBase, git.get_repo_name(self.repodir)) self.assertEquals(rev, self.revisions[-1]) # We should see all the revisions revs = getRevisions(self.wc, branches=['origin/master', 'origin/branch2']) shared_revs = getRevisions( shareDir, branches=['origin/master', 'origin/branch2']) self.assertEquals(revs, shared_revs) self.assertEquals(revs, self.revisions) # Update to a different rev rev = git.git(self.repodir, self.wc, revision=self.revisions[0], shareBase=shareBase) self.assertEquals(rev, self.revisions[0]) self.assertFalse(os.path.exists(os.path.join(self.wc, 'newfile'))) # Add a commit to the original repo newfile = os.path.join(self.repodir, 'newfile') touch(newfile) run_cmd(['git', 'add', 'newfile'], cwd=self.repodir) run_cmd(['git', 'commit', '-q', '-m', 'add newfile'], cwd=self.repodir) new_rev = getRevisions(self.repodir)[-1] # Update to the new rev rev = git.git(self.repodir, self.wc, revision=new_rev, shareBase=shareBase) self.assertEquals(rev, new_rev) self.assertTrue(os.path.exists(os.path.join(self.wc, 'newfile')))
format="%(asctime)s %(message)s") if len(args) not in (1, 2): parser.error("Invalid number of arguments") repo = args[0] if len(args) == 2: dest = args[1] else: dest = os.path.basename(repo) # Parse propsfile if options.propsfile: js = json.load(open(options.propsfile)) if options.revision is None: options.revision = js['sourcestamp']['revision'] if options.branch is None: options.branch = js['sourcestamp']['branch'] got_revision = git( repo, dest, options.branch, options.revision, shareBase=options.shared_dir, mirrors=options.mirrors, clean_dest=options.clean, ) print "Got revision %s" % got_revision
options, args = parser.parse_args() logging.basicConfig( level=options.loglevel, format="%(asctime)s %(message)s") if len(args) not in (1, 2): parser.error("Invalid number of arguments") repo = args[0] if len(args) == 2: dest = args[1] else: dest = os.path.basename(repo) # Parse propsfile if options.propsfile: js = json.load(open(options.propsfile)) if options.revision is None: options.revision = js['sourcestamp']['revision'] if options.branch is None: options.branch = js['sourcestamp']['branch'] got_revision = git(repo, dest, options.branch, options.revision, shareBase=options.shared_dir, mirrors=options.mirrors, clean_dest=options.clean, ) print "Got revision %s" % got_revision
def testGitBadShare(self): shareBase = os.path.join(self.tmpdir, 'git-repos') open(shareBase, 'w').write("hello!") rev = git.git(self.repodir, self.wc, shareBase=shareBase) self.assertEquals(rev, self.revisions[-1])