merge with stable
authorMatt Mackall <mpm@selenic.com>
Sat, 02 Jan 2016 02:13:56 +0100
changeset 27610 b8405d739149
parent 27609 ca2d4080a02e (current diff)
parent 27575 7c598947fbbd (diff)
child 27611 fa8c491f2deb
merge with stable
mercurial/merge.py
mercurial/scmutil.py
--- a/.hgsigs	Thu Dec 31 13:45:48 2015 -0500
+++ b/.hgsigs	Sat Jan 02 02:13:56 2016 +0100
@@ -117,3 +117,4 @@
 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
+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
--- a/.hgtags	Thu Dec 31 13:45:48 2015 -0500
+++ b/.hgtags	Sat Jan 02 02:13:56 2016 +0100
@@ -130,3 +130,4 @@
 47dd34f2e7272be9e3b2a5a83cd0d20be44293f4 3.6
 1aa5083cbebbe7575c88f3402ab377539b484897 3.6.1
 2d437a0f3355834a9485bbbeb30a52a052c98f19 3.6.2
+ea389970c08449440587712117f178d33bab3f1e 3.6.3
--- a/i18n/ja.po	Thu Dec 31 13:45:48 2015 -0500
+++ b/i18n/ja.po	Sat Jan 02 02:13:56 2016 +0100
@@ -1,7 +1,7 @@
 # Japanese translation for Mercurial
 # Mercurial 日本語翻訳
 #
-# Copyright (C) 2009-2015 the Mercurial team
+# Copyright (C) 2009-2016 the Mercurial team
 #
 # ========================================
 # 【翻訳用語集】
@@ -161,8 +161,8 @@
 msgstr ""
 "Project-Id-Version: Mercurial\n"
 "Report-Msgid-Bugs-To: <mercurial-devel@selenic.com>\n"
-"POT-Creation-Date: 2015-10-30 21:04+0900\n"
-"PO-Revision-Date: 2015-11-01 05:05+0900\n"
+"POT-Creation-Date: 2016-01-01 11:10+0900\n"
+"PO-Revision-Date: 2016-01-01 12:11+0900\n"
 "Last-Translator: Japanese translation team <mercurial-ja@googlegroups.com>\n"
 "Language-Team: Japanese\n"
 "Language: ja\n"
@@ -1709,7 +1709,7 @@
 msgstr ""
 
 msgid ""
-"Bundle files can be generated with the :hg:`bundle` comand. Typically\n"
+"Bundle files can be generated with the :hg:`bundle` command. Typically\n"
 ":hg:`bundle --all` is used to produce a bundle of the entire repository."
 msgstr ""
 
@@ -11887,6 +11887,9 @@
 msgid "delete a given bookmark"
 msgstr "指定ブックマークの削除"
 
+# this is left untranslated intentionally, because this VERY GENERIC
+# word may be used also for OLD something other than bookmark name
+# (by foozy@lares.dti.ne.jp)
 msgid "OLD"
 msgstr ""
 
@@ -15511,11 +15514,11 @@
 
 #, python-format
 msgid "not marking %s as it is driver-resolved\n"
-msgstr ""
+msgstr "マージドライバの処理対象 %s は衝突解消済み扱いになりません\n"
 
 #, python-format
 msgid "not unmarking %s as it is driver-resolved\n"
-msgstr ""
+msgstr "マージドライバの処理対象 %s は衝突未解消扱いになりません\n"
 
 msgid "arguments do not match paths that need resolving\n"
 msgstr "指定パターンは衝突解消対象ファイルに合致しません\n"
@@ -16552,9 +16555,6 @@
 msgid "copy failed: %s is not a file or a symbolic link\n"
 msgstr "コピー失敗: %s はファイルでもシンボリックリンクでもありません\n"
 
-msgid "the python curses/wcurses module is not available/installed"
-msgstr "Python の curses/wcurses モジュールが利用できません"
-
 # this is left untranslated intentionally, because there is no
 # concrete user of this VERY GENERIC word (by foozy@lares.dti.ne.jp)
 msgid "confirm"
@@ -28871,7 +28871,10 @@
 msgstr "%r に対してシンボリックリンクできません: %s"
 
 msgid "empty revision range"
-msgstr "リビジョンの範囲指定が空です"
+msgstr "該当するリビジョンがありません"
+
+msgid "empty revision on one side of range"
+msgstr "リビジョン対指定の一方が無効です"
 
 #, python-format
 msgid "recording removal of %s as rename to %s (%d%% similar)\n"
--- a/mercurial/merge.py	Thu Dec 31 13:45:48 2015 -0500
+++ b/mercurial/merge.py	Sat Jan 02 02:13:56 2016 +0100
@@ -559,7 +559,7 @@
 def _checkunknownfile(repo, wctx, mctx, f, f2=None):
     if f2 is None:
         f2 = f
-    return (os.path.isfile(repo.wjoin(f))
+    return (repo.wvfs.isfileorlink(f)
         and repo.wvfs.audit.check(f)
         and repo.dirstate.normalize(f) not in repo.dirstate
         and mctx[f2].cmp(wctx[f]))
--- a/mercurial/scmutil.py	Thu Dec 31 13:45:48 2015 -0500
+++ b/mercurial/scmutil.py	Sat Jan 02 02:13:56 2016 +0100
@@ -329,6 +329,17 @@
     def islink(self, path=None):
         return os.path.islink(self.join(path))
 
+    def isfileorlink(self, path=None):
+        '''return whether path is a regular file or a symlink
+
+        Unlike isfile, this doesn't follow symlinks.'''
+        try:
+            st = self.lstat(path)
+        except OSError:
+            return False
+        mode = st.st_mode
+        return stat.S_ISREG(mode) or stat.S_ISLNK(mode)
+
     def reljoin(self, *paths):
         """join various elements of a path together (as os.path.join would do)
 
--- a/tests/test-merge1.t	Thu Dec 31 13:45:48 2015 -0500
+++ b/tests/test-merge1.t	Sat Jan 02 02:13:56 2016 +0100
@@ -102,6 +102,28 @@
   b: untracked file differs
   abort: untracked files in working directory differ from files in requested revision
   [255]
+
+#if symlink
+symlinks to directories should be treated as regular files (issue5027)
+  $ rm b
+  $ ln -s 'This is file b2' b
+  $ hg merge 1
+  b: untracked file differs
+  abort: untracked files in working directory differ from files in requested revision
+  [255]
+symlinks shouldn't be followed
+  $ rm b
+  $ echo This is file b1 > .hg/b
+  $ ln -s .hg/b b
+  $ hg merge 1
+  b: untracked file differs
+  abort: untracked files in working directory differ from files in requested revision
+  [255]
+
+  $ rm b
+  $ echo This is file b2 > b
+#endif
+
 merge of b expected
   $ hg merge -f 1
   merging b