Пример #1
0
    def test_tree_copy_after_update(self):
        """Check Tree.id is correctly updated when the tree is copied after updated.
        """
        shas = []
        tree = Tree()
        shas.append(tree.id)
        tree.add(b'data', 0o644, Blob().id)
        copied = tree.copy()
        shas.append(tree.id)
        shas.append(copied.id)

        self.assertNotIn(shas[0], shas[1:])
        self.assertEqual(shas[1], shas[2])
Пример #2
0
    def test_tree_copy_after_update(self):
        """Check Tree.id is correctly updated when the tree is copied after updated.
        """
        shas = []
        tree = Tree()
        shas.append(tree.id)
        tree.add(b'data', 0o644, Blob().id)
        copied = tree.copy()
        shas.append(tree.id)
        shas.append(copied.id)

        self.assertNotIn(shas[0], shas[1:])
        self.assertEqual(shas[1], shas[2])
Пример #3
0
 def checkout(self, commit=None, branch=None, retry=True):
     if commit is not None and isinstance(commit, string_types):
         commit = self.repo._repo.get_object(commit)
     if not commit:
         branches = OrderedDict(
             (('refs/heads/%s' % branch
               or 'master', 1), ('refs/heads/master', 1)))
         for ref in branches:
             try:
                 _commit_id = self.repo._repo.refs[ref]
             except KeyError:
                 pass
             else:
                 try:
                     commit = self.repo._repo.get_object(_commit_id)
                 except ObjectMissing:
                     if ref != 'refs/heads/master':
                         del self.repo._repo.refs[ref]
                     else:
                         six.reraise(*sys.exc_info())
                 else:
                     break
     if commit is not None and isinstance(commit, string_types):
         commit = self.repo._repo.get_object(commit)
     self._commit = commit
     if commit is None:
         tree = Tree()
     else:
         try:
             tree = self.repo._repo.get_object(commit.tree)
         except ObjectMissing:
             if retry and branch is not None:
                 if branch != 'master':
                     del self.repo._repo.refs['refs/heads/%s' % branch]
                     return self.checkout(branch='master', retry=False)
                 else:
                     six.reraise(*sys.exc_info())
     self._tree = tree
     self._working_tree = tree.copy()
     self._blobs = {}
Пример #4
0
 def checkout(self, commit=None, branch=None, retry=True):
     if commit is not None and isinstance(commit, string_types):
         commit = self.repo._repo.get_object(commit)
     if not commit:
         branches = OrderedDict((('refs/heads/%s' % branch or 'master', 1),
                                 ('refs/heads/master', 1)))
         for ref in branches:
             try:
                 _commit_id = self.repo._repo.refs[ref]
             except KeyError:
                 pass
             else:
                 try:
                     commit = self.repo._repo.get_object(_commit_id)
                 except ObjectMissing:
                     if ref != 'refs/heads/master':
                         del self.repo._repo.refs[ref]
                     else:
                         six.reraise(*sys.exc_info())
                 else:
                     break
     if commit is not None and isinstance(commit, string_types):
         commit = self.repo._repo.get_object(commit)
     self._commit = commit
     if commit is None:
         tree = Tree()
     else:
         try:
             tree = self.repo._repo.get_object(commit.tree)
         except ObjectMissing:
             if retry and branch is not None:
                 if branch != 'master':
                     del self.repo._repo.refs['refs/heads/%s' % branch]
                     return self.checkout(branch='master', retry=False)
                 else:
                     six.reraise(*sys.exc_info())
     self._tree = tree
     self._working_tree = tree.copy()
     self._blobs = {}
Пример #5
0
 def checkout(self, commit=None, branch=None, retry=True):
     if self._tree != self._working_tree:
         raise IOError('Can only switch from a clean repository')
     if commit is not None and isinstance(commit, string_types):
         commit = self.repo._repo.get_object(commit)
     if not commit:
         for ref in {'refs/heads/%s' % branch, 'refs/heads/master'}:
             try:
                 _commit_id = self.repo._repo.refs[ref]
             except KeyError:
                 pass
             else:
                 try:
                     commit = self.repo._repo.get_object(_commit_id)
                 except ObjectMissing:
                     if ref != 'refs/heads/master':
                         del self.repo._repo.refs[ref]
                     else:
                         six.reraise(*sys.exc_info())
                 else:
                     break
     if commit is not None and isinstance(commit, string_types):
         commit = self.repo._repo.get_object(commit)
     self._commit = commit
     if commit is None:
         tree = Tree()
     else:
         try:
             tree = self.repo._repo.get_object(commit.tree)
         except ObjectMissing:
             if retry and branch is not None:
                 if branch != 'master':
                     del self.repo._repo.refs['refs/heads/%s' % branch]
                     return self.checkout(branch='master', retry=False)
                 else:
                     six.reraise(*sys.exc_info())
     self._tree = tree
     self._working_tree = tree.copy()
     self._blobs = {}
Пример #6
0
 def checkout(self, commit=None, branch=None):
     if self._tree != self._working_tree:
         raise IOError('Can only switch from a clean repository')
     if commit is not None and isinstance(commit, string_types):
         commit = self.repo._repo.get_object(commit)
     if not commit:
         for ref in {'refs/heads/%s' % branch, 'refs/heads/master'}:
             try:
                 _commit_id = self.repo._repo.refs[ref]
             except KeyError:
                 pass
             else:
                 commit = self.repo._repo.get_object(_commit_id)
                 break
     if commit is not None and isinstance(commit, string_types):
         commit = self.repo._repo.get_object(commit)
     self._commit = commit
     if commit is None:
         tree = Tree()
     else:
         tree = self.repo._repo.get_object(commit.tree)
     self._tree = tree
     self._working_tree = tree.copy()
     self._blobs = {}
Пример #7
0
 def checkout(self, commit=None, branch=None):
     if self._tree != self._working_tree:
         raise IOError('Can only switch from a clean repository')
     if commit is not None and isinstance(commit, string_types):
         commit = self.repo._repo.get_object(commit)
     if not commit:
         for ref in {'refs/heads/%s' % branch, 'refs/heads/master'}:
             try:
                 _commit_id = self.repo._repo.refs[ref]
             except KeyError:
                 pass
             else:
                 commit = self.repo._repo.get_object(_commit_id)
                 break
     if commit is not None and isinstance(commit, string_types):
         commit = self.repo._repo.get_object(commit)
     self._commit = commit
     if commit is None:
         tree = Tree()
     else:
         tree = self.repo._repo.get_object(commit.tree)
     self._tree = tree
     self._working_tree = tree.copy()
     self._blobs = {}