# HG changeset patch # User Matt Mackall # Date 2016-01-02 01:13:56 # Node ID b8405d739149cdd6d8d9bd5e3dd2ad8487b1f09a # Parent ca2d4080a02ea4d47c8894f0252af032f0a7de59 # Parent 7c598947fbbd78b26989326c61345c6e46855bdc merge with stable diff --git a/.hgsigs b/.hgsigs --- a/.hgsigs +++ b/.hgsigs @@ -117,3 +117,4 @@ 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 diff --git a/.hgtags b/.hgtags --- a/.hgtags +++ b/.hgtags @@ -130,3 +130,4 @@ b66e3ca0b90c3095ea28dfd39aa24247bebf5c20 47dd34f2e7272be9e3b2a5a83cd0d20be44293f4 3.6 1aa5083cbebbe7575c88f3402ab377539b484897 3.6.1 2d437a0f3355834a9485bbbeb30a52a052c98f19 3.6.2 +ea389970c08449440587712117f178d33bab3f1e 3.6.3 diff --git a/i18n/ja.po b/i18n/ja.po --- a/i18n/ja.po +++ b/i18n/ja.po @@ -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 @@ msgid "" msgstr "" "Project-Id-Version: Mercurial\n" "Report-Msgid-Bugs-To: \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 \n" "Language-Team: Japanese\n" "Language: ja\n" @@ -1709,7 +1709,7 @@ msgid "" 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 @@ msgstr "強制実施" 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 @@ msgstr "マージが実施されていない場合は resolve コマンドを使用できません" #, 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 @@ msgstr "%s は削除されませんでした!\n" 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 @@ msgid "could not symlink to %r: %s" 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" diff --git a/mercurial/merge.py b/mercurial/merge.py --- a/mercurial/merge.py +++ b/mercurial/merge.py @@ -559,7 +559,7 @@ class mergestate(object): 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])) diff --git a/mercurial/scmutil.py b/mercurial/scmutil.py --- a/mercurial/scmutil.py +++ b/mercurial/scmutil.py @@ -329,6 +329,17 @@ class abstractvfs(object): 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) diff --git a/tests/test-merge1.t b/tests/test-merge1.t --- a/tests/test-merge1.t +++ b/tests/test-merge1.t @@ -102,6 +102,28 @@ merge should fail 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