Exemple #1
0
    def read(self):  # override
        # ignore HG_PENDING because identity is used only for writing
        self.identity = util.filestat.frompath(
            self._opener.join(self._filename))

        try:
            fp = self._opendirstatefile()
            try:
                parents, dirstate_tuples, copymap = eden_dirstate_serializer.read(
                    fp, self._filename)
            finally:
                fp.close()
        except IOError as e:
            if e.errno != errno.ENOENT:
                raise
            else:
                # If the dirstate file does not exist, then we silently ignore
                # the error because that's what Mercurial's dirstate does.
                return

        if not self._dirtyparents:
            self.setparents(*parents)
        self._map = {
            n: parsers.dirstatetuple(v[0], v[1], v[2], DUMMY_MTIME)
            for n, v in dirstate_tuples.items()
        }
        self.copymap = copymap
Exemple #2
0
    def _insert_tuple(self, filename, state, mode, size, mtime):  # override
        if size != MERGE_STATE_BOTH_PARENTS and size != MERGE_STATE_OTHER_PARENT:
            merge_state = MERGE_STATE_NOT_APPLICABLE
        else:
            merge_state = size

        self._map[filename] = parsers.dirstatetuple(state, mode, merge_state,
                                                    DUMMY_MTIME)
Exemple #3
0
def pack_dirstate(fakenow, orig, dmap, copymap, pl, now):
    # execute what original parsers.pack_dirstate should do actually
    # for consistency
    actualnow = int(now)
    for f, e in pycompat.iteritems(dmap):
        if e[0] == "n" and e[3] == actualnow:
            e = parsers.dirstatetuple(e[0], e[1], e[2], -1)
            dmap[f] = e

    return orig(dmap, copymap, pl, fakenow)
    def __getitem__(self, filename):
        # type(str) -> parsers.dirstatetuple
        entry = self._map.get(filename)
        if entry is not None:
            return entry

        # edenfs only tracks one parent
        commitctx = self._repo["."]
        node, flag = commitctx._fileinfo(filename)

        mode = modefromflag[flag]
        return parsers.dirstatetuple("n", mode, MERGE_STATE_NOT_APPLICABLE, DUMMY_MTIME)