mercurial/localrepo.py
changeset 3790 f183c18568df
parent 3774 b1eeaeb936ae
child 3791 8643b9f90b51
equal deleted inserted replaced
3789:734b1d6ba3dc 3790:f183c18568df
   481             ds = self.opener("dirstate").read()
   481             ds = self.opener("dirstate").read()
   482         except IOError:
   482         except IOError:
   483             ds = ""
   483             ds = ""
   484         self.opener("journal.dirstate", "w").write(ds)
   484         self.opener("journal.dirstate", "w").write(ds)
   485 
   485 
       
   486         renames = [(self.sjoin("journal"), self.sjoin("undo")),
       
   487                    (self.join("journal.dirstate"), self.join("undo.dirstate"))]
   486         tr = transaction.transaction(self.ui.warn, self.sopener,
   488         tr = transaction.transaction(self.ui.warn, self.sopener,
   487                                        self.sjoin("journal"),
   489                                        self.sjoin("journal"),
   488                                        aftertrans(self.path))
   490                                        aftertrans(renames))
   489         self.transhandle = tr
   491         self.transhandle = tr
   490         return tr
   492         return tr
   491 
   493 
   492     def recover(self):
   494     def recover(self):
   493         l = self.lock()
   495         l = self.lock()
  1895         if stream and not heads and remote.capable('stream'):
  1897         if stream and not heads and remote.capable('stream'):
  1896             return self.stream_in(remote)
  1898             return self.stream_in(remote)
  1897         return self.pull(remote, heads)
  1899         return self.pull(remote, heads)
  1898 
  1900 
  1899 # used to avoid circular references so destructors work
  1901 # used to avoid circular references so destructors work
  1900 def aftertrans(base):
  1902 def aftertrans(files):
  1901     p = base
  1903     renamefiles = [tuple(t) for t in files]
  1902     def a():
  1904     def a():
  1903         util.rename(os.path.join(p, "journal"), os.path.join(p, "undo"))
  1905         for src, dest in renamefiles:
  1904         util.rename(os.path.join(p, "journal.dirstate"),
  1906             util.rename(src, dest)
  1905                     os.path.join(p, "undo.dirstate"))
       
  1906     return a
  1907     return a
  1907 
  1908 
  1908 def instance(ui, path, create):
  1909 def instance(ui, path, create):
  1909     return localrepository(ui, util.drop_scheme('file', path), create)
  1910     return localrepository(ui, util.drop_scheme('file', path), create)
  1910 
  1911