861 ui.write(_(" (templates seem to have been installed incorrectly)\n")) |
861 ui.write(_(" (templates seem to have been installed incorrectly)\n")) |
862 problems += 1 |
862 problems += 1 |
863 |
863 |
864 # patch |
864 # patch |
865 ui.status(_("Checking patch...\n")) |
865 ui.status(_("Checking patch...\n")) |
866 patcher = ui.config('ui', 'patch') |
866 patchproblems = 0 |
867 patcher = ((patcher and util.find_exe(patcher)) or |
867 a = "1\n2\n3\n4\n" |
868 util.find_exe('gpatch') or |
868 b = "1\n2\n3\ninsert\n4\n" |
869 util.find_exe('patch')) |
869 fa = writetemp(a) |
870 if not patcher: |
870 d = mdiff.unidiff(a, None, b, None, os.path.basename(fa)) |
871 ui.write(_(" Can't find patch or gpatch in PATH\n")) |
871 fd = writetemp(d) |
872 ui.write(_(" (specify a patch utility in your .hgrc file)\n")) |
872 |
873 problems += 1 |
873 files = {} |
|
874 try: |
|
875 patch.patch(fd, ui, cwd=os.path.dirname(fa), files=files) |
|
876 except util.Abort, e: |
|
877 ui.write(_(" patch call failed:\n")) |
|
878 ui.write(" " + str(e) + "\n") |
|
879 patchproblems += 1 |
874 else: |
880 else: |
875 # actually attempt a patch here |
881 if list(files) != [os.path.basename(fa)]: |
876 a = "1\n2\n3\n4\n" |
882 ui.write(_(" unexpected patch output!\n")) |
877 b = "1\n2\n3\ninsert\n4\n" |
883 patchproblems += 1 |
878 fa = writetemp(a) |
884 a = file(fa).read() |
879 d = mdiff.unidiff(a, None, b, None, os.path.basename(fa)) |
885 if a != b: |
880 fd = writetemp(d) |
886 ui.write(_(" patch test failed!\n")) |
881 |
887 patchproblems += 1 |
882 files = {} |
888 |
883 try: |
889 if patchproblems: |
884 patch.patch(fd, ui, cwd=os.path.dirname(fa), files=files) |
890 if ui.config('ui', 'patch'): |
885 except util.Abort, e: |
891 ui.write(_(" (Current patch tool may be incompatible with patch," |
886 ui.write(_(" patch call failed:\n")) |
892 " or misconfigured. Please check your .hgrc file)\n")) |
887 ui.write(" " + str(e) + "\n") |
|
888 problems += 1 |
|
889 else: |
893 else: |
890 if list(files) != [os.path.basename(fa)]: |
894 ui.write(_(" Internal patcher failure, please report this error" |
891 ui.write(_(" unexpected patch output!")) |
895 " to http://www.selenic.com/mercurial/bts\n")) |
892 ui.write(_(" (you may have an incompatible version of patch)\n")) |
896 problems += patchproblems |
893 problems += 1 |
897 |
894 a = file(fa).read() |
898 os.unlink(fa) |
895 if a != b: |
899 os.unlink(fd) |
896 ui.write(_(" patch test failed!")) |
|
897 ui.write(_(" (you may have an incompatible version of patch)\n")) |
|
898 problems += 1 |
|
899 |
|
900 os.unlink(fa) |
|
901 os.unlink(fd) |
|
902 |
900 |
903 # merge helper |
901 # merge helper |
904 ui.status(_("Checking merge helper...\n")) |
902 ui.status(_("Checking merge helper...\n")) |
905 cmd = (os.environ.get("HGMERGE") or ui.config("ui", "merge") |
903 cmd = (os.environ.get("HGMERGE") or ui.config("ui", "merge") |
906 or "hgmerge") |
904 or "hgmerge") |