mercurial/localrepo.py
changeset 2844 e196aa1df169
parent 2601 00fc88b0b256
child 2846 35af2e56f15a
equal deleted inserted replaced
2843:0b50a580be36 2844:e196aa1df169
   479         mfm = mf1.copy()
   479         mfm = mf1.copy()
   480         linkrev = self.changelog.count()
   480         linkrev = self.changelog.count()
   481         for f in files:
   481         for f in files:
   482             try:
   482             try:
   483                 t = self.wread(f)
   483                 t = self.wread(f)
   484                 tm = util.is_exec(self.wjoin(f), mfm.get(f, False))
   484                 mfm.set(f, util.is_exec(self.wjoin(f), mfm.execf(f)))
   485                 r = self.file(f)
   485                 r = self.file(f)
   486                 mfm[f] = tm
       
   487 
   486 
   488                 (entry, fp1, fp2) = self.checkfilemerge(f, t, r, m1, m2)
   487                 (entry, fp1, fp2) = self.checkfilemerge(f, t, r, m1, m2)
   489                 if entry:
   488                 if entry:
   490                     mm[f] = entry
   489                     mm[f] = entry
   491                     continue
   490                     continue
   560         linkrev = self.changelog.count()
   559         linkrev = self.changelog.count()
   561         commit.sort()
   560         commit.sort()
   562         for f in commit:
   561         for f in commit:
   563             self.ui.note(f + "\n")
   562             self.ui.note(f + "\n")
   564             try:
   563             try:
   565                 mf1[f] = util.is_exec(self.wjoin(f), mf1.get(f, False))
   564                 mf1.set(f, util.is_exec(self.wjoin(f), mf1.execf(f)))
   566                 t = self.wread(f)
   565                 t = self.wread(f)
   567             except IOError:
   566             except IOError:
   568                 self.ui.warn(_("trouble committing %s!\n") % f)
   567                 self.ui.warn(_("trouble committing %s!\n") % f)
   569                 raise
   568                 raise
   570 
   569 
   804             if self.dirstate.state(f) not in  "r":
   803             if self.dirstate.state(f) not in  "r":
   805                 self.ui.warn("%s not removed!\n" % f)
   804                 self.ui.warn("%s not removed!\n" % f)
   806             else:
   805             else:
   807                 t = self.file(f).read(m[f])
   806                 t = self.file(f).read(m[f])
   808                 self.wwrite(f, t)
   807                 self.wwrite(f, t)
   809                 util.set_exec(self.wjoin(f), mf[f])
   808                 util.set_exec(self.wjoin(f), mf.execf(f))
   810                 self.dirstate.update([f], "n")
   809                 self.dirstate.update([f], "n")
   811 
   810 
   812     def copy(self, source, dest, wlock=None):
   811     def copy(self, source, dest, wlock=None):
   813         p = self.wjoin(dest)
   812         p = self.wjoin(dest)
   814         if not os.path.exists(p):
   813         if not os.path.exists(p):
  1735         mfw = mf1.copy()
  1734         mfw = mf1.copy()
  1736         umap = dict.fromkeys(unknown)
  1735         umap = dict.fromkeys(unknown)
  1737 
  1736 
  1738         for f in added + modified + unknown:
  1737         for f in added + modified + unknown:
  1739             mw[f] = ""
  1738             mw[f] = ""
  1740             mfw[f] = util.is_exec(self.wjoin(f), mfw.get(f, False))
  1739             mfw.set(f, util.is_exec(self.wjoin(f), mfw.execf(f)))
  1741 
  1740 
  1742         if moddirstate and not wlock:
  1741         if moddirstate and not wlock:
  1743             wlock = self.wlock()
  1742             wlock = self.wlock()
  1744 
  1743 
  1745         for f in deleted + removed:
  1744         for f in deleted + removed:
  1775                     # are both different from the ancestor?
  1774                     # are both different from the ancestor?
  1776                     if n != a and m2[f] != a:
  1775                     if n != a and m2[f] != a:
  1777                         self.ui.debug(_(" %s versions differ, resolve\n") % f)
  1776                         self.ui.debug(_(" %s versions differ, resolve\n") % f)
  1778                         # merge executable bits
  1777                         # merge executable bits
  1779                         # "if we changed or they changed, change in merge"
  1778                         # "if we changed or they changed, change in merge"
  1780                         a, b, c = mfa.get(f, 0), mfw[f], mf2[f]
  1779                         a, b, c = mfa.execf(f), mfw.execf(f), mf2.execf(f)
  1781                         mode = ((a^b) | (a^c)) ^ a
  1780                         mode = ((a^b) | (a^c)) ^ a
  1782                         merge[f] = (m1.get(f, nullid), m2[f], mode)
  1781                         merge[f] = (m1.get(f, nullid), m2[f], mode)
  1783                         s = 1
  1782                         s = 1
  1784                     # are we clobbering?
  1783                     # are we clobbering?
  1785                     # is remote's version newer?
  1784                     # is remote's version newer?
  1794                     get[f] = m2[f]
  1793                     get[f] = m2[f]
  1795 
  1794 
  1796                 if not s and mfw[f] != mf2[f]:
  1795                 if not s and mfw[f] != mf2[f]:
  1797                     if force:
  1796                     if force:
  1798                         self.ui.debug(_(" updating permissions for %s\n") % f)
  1797                         self.ui.debug(_(" updating permissions for %s\n") % f)
  1799                         util.set_exec(self.wjoin(f), mf2[f])
  1798                         util.set_exec(self.wjoin(f), mf2.execf(f))
  1800                     else:
  1799                     else:
  1801                         a, b, c = mfa.get(f, 0), mfw[f], mf2[f]
  1800                         a, b, c = mfa.execf(f), mfw.execf(f), mf2.execf(f)
  1802                         mode = ((a^b) | (a^c)) ^ a
  1801                         mode = ((a^b) | (a^c)) ^ a
  1803                         if mode != b:
  1802                         if mode != b:
  1804                             self.ui.debug(_(" updating permissions for %s\n")
  1803                             self.ui.debug(_(" updating permissions for %s\n")
  1805                                           % f)
  1804                                           % f)
  1806                             util.set_exec(self.wjoin(f), mode)
  1805                             util.set_exec(self.wjoin(f), mode)
  1896             if f[0] == "/":
  1895             if f[0] == "/":
  1897                 continue
  1896                 continue
  1898             self.ui.note(_("getting %s\n") % f)
  1897             self.ui.note(_("getting %s\n") % f)
  1899             t = self.file(f).read(get[f])
  1898             t = self.file(f).read(get[f])
  1900             self.wwrite(f, t)
  1899             self.wwrite(f, t)
  1901             util.set_exec(self.wjoin(f), mf2[f])
  1900             util.set_exec(self.wjoin(f), mf2.execf(f))
  1902             if moddirstate:
  1901             if moddirstate:
  1903                 if branch_merge:
  1902                 if branch_merge:
  1904                     self.dirstate.update([f], 'n', st_mtime=-1)
  1903                     self.dirstate.update([f], 'n', st_mtime=-1)
  1905                 else:
  1904                 else:
  1906                     self.dirstate.update([f], 'n')
  1905                     self.dirstate.update([f], 'n')