예제 #1
0
 def checkout(self, sha=None):
     self._fetch()
     print "#  Checkout repo %s @ %s => %s.."%(self.remote_uri,sha,self.path)
     self._init_subrepos(sha)
     target = self['HEAD']
     if sha:
         target = self[sha]
     target_tree = target.tree
     index = Index(self.index_path())
     for e_path,e_mode,e_sha in index.changes_from_tree(self.object_store, target_tree, want_unchanged=True):
         e_source = (e_path[1],e_mode[1],e_sha[1])
         e_target = (e_path[0],e_mode[0],e_sha[0])
         e_to_checkout = None
         if e_source[0] and e_target[0]:
             if not os.path.exists(os.path.join(self.path, e_target[0])):
                 e_to_checkout = ("A",e_target)
             elif e_source[2] != e_target[2]:
                 e_to_checkout = ("U",e_target)
         elif not e_target[0]:
             print "D  %s"%(os.path.join(self.path, e_source[0]))
             if stat.S_ISREG(e_source[1]):
                 os.unlink(os.path.join(self.path, e_source[0]))
                 del index[e_source[0]]
         else:
             e_to_checkout = ("A",e_target)
         if e_to_checkout:
             print "%s  %s"%(e_to_checkout[0],os.path.join(self.path,e_to_checkout[1][0]))
             self._checkout_entry(index, *e_to_checkout[1])
     self._init_subrepos(sha)
     for subrepo in self.subrepo.values():
         subrepo[1].checkout(subrepo[0])
예제 #2
0
파일: repo.py 프로젝트: riverfor/dulwich
    def open_index(self):
        """Open the index for this repository.

        :raise NoIndexPresent: If no index is present
        :return: The matching `Index`
        """
        from dulwich.index import Index
        if not self.has_index():
            raise NoIndexPresent()
        return Index(self.index_path())
예제 #3
0
파일: cli.py 프로젝트: codilemma/Python_env
    def run(self, args):
        opts, args = getopt(args, "", [])

        if args == []:
            print("Usage: dulwich dump-index FILENAME")
            sys.exit(1)

        filename = args[0]
        idx = Index(filename)

        for o in idx:
            print(o, idx[o])
예제 #4
0
 def status(self, sha=None):
     print "#  Status.."
     target = self['HEAD']
     if sha:
         target = self[sha]
     target_tree = target.tree
     index = Index(self.index_path())
     for e_path,e_mode,e_sha in index.changes_from_tree(self.object_store, target_tree, want_unchanged=True):
         e_source = (e_path[0],e_mode[0],e_sha[0])
         e_target = (e_path[1],e_mode[1],e_sha[1])
         if e_source[0] and e_target[0]:
             if not os.path.exists(os.path.join(self.path, e_source[0])):
                 print "D  %s"%(os.path.join(self.path, e_source[0]))
             elif e_source[2] != e_target[2]:
                 print "M  %s"%(os.path.join(self.path, e_source[0]))
         elif not e_target[0]:
             print "D  %s"%(os.path.join(self.path, e_source[0]))
         else:
             print "A  %s"%(os.path.join(self.path, e_target[0]))
예제 #5
0
    def __init__(self, bzrdir, repo, branch):
        self.basedir = bzrdir.transport.base
        self.bzrdir = bzrdir
        self.repository = repo
        self._branch = branch
        self._transport = bzrdir.transport

        self.controldir = urlutils.join(self.repository._git.path, 'bzr')

        try:
            os.makedirs(self.controldir)
            os.makedirs(os.path.join(self.controldir, 'lock'))
        except OSError:
            pass

        self._control_files = lockable_files.LockableFiles(
            transport.get_transport(self.controldir), 'lock', lockdir.LockDir)

        self._format = GitWorkingTreeFormat()

        self.index = Index(
            os.path.join(self.repository._git.controldir(), "index"))
예제 #6
0
 def get_simple_index(self, name):
     return Index(os.path.join(self.datadir, name))
예제 #7
0
 def open_index(self):
     """Open the index for this repository."""
     from dulwich.index import Index
     if not self.has_index():
         raise NoIndexPresent()
     return Index(self.index_path())
예제 #8
0
파일: git.py 프로젝트: cnmade/xandikos
 def __enter__(self):
     self._file = GitFile(self._path, 'wb')
     self._index = Index(self._path)
     return self._index
예제 #9
0
 def __enter__(self):
     # TODO(jelmer): This can raise dulwich.file.FileLocked;
     # https://github.com/jelmer/xandikos/issues/66
     self._file = GitFile(self._path, 'wb')
     self._index = Index(self._path)
     return self._index
예제 #10
0
 def open_index(self):
     """Open the index for this repository."""
     from dulwich.index import Index
     return Index(self.index_path())