hgext/imerge.py
changeset 5056 34a54cc5df1b
parent 5055 56d48aed1f69
child 5064 420e1166a876
equal deleted inserted replaced
5055:56d48aed1f69 5056:34a54cc5df1b
    90     def save(self):
    90     def save(self):
    91         lock = self.repo.lock()
    91         lock = self.repo.lock()
    92 
    92 
    93         if not os.path.isdir(self.path):
    93         if not os.path.isdir(self.path):
    94             os.mkdir(self.path)
    94             os.mkdir(self.path)
    95         fd = self.opener('status', 'wb')
    95         statusfile = self.opener('status', 'wb')
    96 
    96 
    97         out = [hex(n.node()) for n in self.parents]
    97         out = [hex(n.node()) for n in self.parents]
    98         out.append(str(len(self.conflicts)))
    98         out.append(str(len(self.conflicts)))
    99         for f in sorted(self.conflicts):
    99         conflicts = self.conflicts.items()
   100             out.append(f)
   100         conflicts.sort()
   101             out.extend(self.conflicts[f])
   101         for fw, fd_fo in conflicts:
       
   102             out.append(fw)
       
   103             out.extend(fd_fo)
   102         out.extend(self.resolved)
   104         out.extend(self.resolved)
   103 
   105 
   104         fd.write('\0'.join(out))
   106         statusfile.write('\0'.join(out))
   105 
   107 
   106     def remaining(self):
   108     def remaining(self):
   107         return [f for f in self.conflicts if f not in self.resolved]
   109         return [f for f in self.conflicts if f not in self.resolved]
   108 
   110 
   109     def filemerge(self, fn):
   111     def filemerge(self, fn):
   162         resolved = dict.fromkeys(self.resolved)
   164         resolved = dict.fromkeys(self.resolved)
   163         for fn in files:
   165         for fn in files:
   164             if fn not in self.conflicts:
   166             if fn not in self.conflicts:
   165                 raise util.Abort('%s is not in the merge set' % fn)
   167                 raise util.Abort('%s is not in the merge set' % fn)
   166             resolved[fn] = True
   168             resolved[fn] = True
   167         self.resolved = sorted(resolved)
   169         self.resolved = resolved.keys()
       
   170         self.resolved.sort()
   168         self.save()
   171         self.save()
   169         return 0
   172         return 0
   170 
   173 
   171     def unresolve(self, files):
   174     def unresolve(self, files):
   172         resolved = dict.fromkeys(self.resolved)
   175         resolved = dict.fromkeys(self.resolved)
   173         for fn in files:
   176         for fn in files:
   174             if fn not in resolved:
   177             if fn not in resolved:
   175                 raise util.Abort('%s is not resolved' % fn)
   178                 raise util.Abort('%s is not resolved' % fn)
   176             del resolved[fn]
   179             del resolved[fn]
   177         self.resolved = sorted(resolved)
   180         self.resolved = resolved.keys()
       
   181         self.resolved.sort()
   178         self.save()
   182         self.save()
   179         return 0
   183         return 0
   180 
   184 
   181     def pickle(self, dest):
   185     def pickle(self, dest):
   182         '''write current merge state to file to be resumed elsewhere'''
   186         '''write current merge state to file to be resumed elsewhere'''
   262     c, args = args[0], args[1:]
   266     c, args = args[0], args[1:]
   263     cmd = complete(c, subcmdtable.keys())
   267     cmd = complete(c, subcmdtable.keys())
   264     if not cmd:
   268     if not cmd:
   265         raise cmdutil.UnknownCommand('imerge ' + c)
   269         raise cmdutil.UnknownCommand('imerge ' + c)
   266     if len(cmd) > 1:
   270     if len(cmd) > 1:
   267         raise cmdutil.AmbiguousCommand('imerge ' + c, sorted(cmd))
   271         cmd.sort()
       
   272         raise cmdutil.AmbiguousCommand('imerge ' + c, cmd)
   268     cmd = cmd[0]
   273     cmd = cmd[0]
   269 
   274 
   270     func = subcmdtable[cmd]
   275     func = subcmdtable[cmd]
   271     try:
   276     try:
   272         return func(im, *args)
   277         return func(im, *args)