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') |