Mercurial > hg
changeset 6009:f077815932ce
filemerge: remove the hgmerge script
This is now better handled using [merge-tools] and [merge-patterns] in hgrc.
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Sun, 03 Feb 2008 19:29:05 -0600 |
parents | 33bfedc0be4a |
children | 83d193a513c8 |
files | doc/hgmerge.1.txt doc/ja/hgmerge.1.ja.txt hgmerge mercurial/help.py setup.py |
diffstat | 5 files changed, 6 insertions(+), 298 deletions(-) [+] |
line wrap: on
line diff
--- a/doc/hgmerge.1.txt Sun Feb 03 19:29:05 2008 -0600 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,35 +0,0 @@ -HGMERGE(1) -========== -Matt Mackall <mpm@selenic.com> -v0.1, 27 May 2005 - -NAME ----- -hgmerge - default wrapper to merge files in Mercurial SCM system - -SYNOPSIS --------- -'hgmerge' local ancestor remote - -DESCRIPTION ------------ -The hgmerge(1) command provides a graphical interface to merge files in the -Mercurial system. It is a simple wrapper around kdiff3, merge(1) and tkdiff(1), -or simply diff(1) and patch(1) depending on what is present on the system. - -hgmerge(1) is used by the Mercurial SCM if the environment variable HGMERGE is -not set. - -AUTHOR ------- -Written by Vincent Danjean <Vincent.Danjean@free.fr> - -SEE ALSO --------- -hg(1) - the command line interface to Mercurial SCM - -COPYING -------- -Copyright \(C) 2005-2007 Matt Mackall. -Free use of this software is granted under the terms of the GNU General -Public License (GPL).
--- a/doc/ja/hgmerge.1.ja.txt Sun Feb 03 19:29:05 2008 -0600 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -HGMERGE(1) -========== -Matt Mackall <mpm@selenic.com> -v0.1, 27 May 2005 - -名前 --- -hgmerge - Mercurial ソースコード管理システムでファイルをマージする -のに使われるデフォルトのラッパー - -書式 --- -'hgmerge' local ancestor remote - -説明 --- -hgmerge(1) コマンドは Mercurial システムでファイルをマージするため -のグラフィカルなインターフェイスを提供します。これは kdiff3, -merge(1), tkdiff(1), または単純に diff(1) と patch(1) のラッパーで、 -どれがシステム上にあるかに依存します。 - -hgmerge(1) は Mercurial ソースコード管理システムで環境変数 -HGMERGE が設定されていない場合に使われます。 - -著者 --- -Vincent Danjean <Vincent.Danjean@free.fr> によって書かれました。 - -関連情報 --- -hg(1) - Mercurial システムへのコマンドラインインターフェイス - -著作権情報 ----- -Copyright (C) 2005-2007 Matt Mackall. -このソフトウェアの自由な使用は GNU 一般公有使用許諾 (GPL) のもとで -認められます。
--- a/hgmerge Sun Feb 03 19:29:05 2008 -0600 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,213 +0,0 @@ -#!/bin/sh -# -# hgmerge - default merge helper for Mercurial -# -# This tries to find a way to do three-way merge on the current system. -# The result ought to end up in $1. Script is run in root directory of -# repository. -# -# Environment variables set by Mercurial: -# HG_FILE name of file within repo -# HG_MY_NODE revision being merged -# HG_OTHER_NODE revision being merged - -set -e # bail out quickly on failure - -LOCAL="$1" -BASE="$2" -OTHER="$3" - -if [ -n "$VISUAL" ]; then - EDIT_PROG="$VISUAL" -elif [ -n "$EDITOR" ]; then - EDIT_PROG="$EDITOR" -else - EDIT_PROG="vi" -fi - -# find decent versions of our utilities, insisting on the GNU versions where we -# need to -MERGE="merge" -DIFF3="gdiff3" -DIFF="gdiff" -PATCH="gpatch" - -type "$MERGE" >/dev/null 2>&1 || MERGE= -type "$DIFF3" >/dev/null 2>&1 || DIFF3="diff3" -$DIFF3 --version >/dev/null 2>&1 || DIFF3= -type "$DIFF" >/dev/null 2>&1 || DIFF="diff" -type "$DIFF" >/dev/null 2>&1 || DIFF= -type "$PATCH" >/dev/null 2>&1 || PATCH="patch" -type "$PATCH" >/dev/null 2>&1 || PATCH= - -# find optional visual utilities -FILEMERGE="/Developer/Applications/Utilities/FileMerge.app/Contents/MacOS/FileMerge" -KDIFF3="kdiff3" -TKDIFF="tkdiff" -MELD="meld" - -type "$FILEMERGE" >/dev/null 2>&1 || FILEMERGE= -type "$KDIFF3" >/dev/null 2>&1 || KDIFF3= -type "$TKDIFF" >/dev/null 2>&1 || TKDIFF= -type "$MELD" >/dev/null 2>&1 || MELD= - -# Hack for Solaris -TEST="/usr/bin/test" -type "$TEST" >/dev/null 2>&1 || TEST="/bin/test" -type "$TEST" >/dev/null 2>&1 || TEST="test" - -# random part of names -RAND="$RANDOM$RANDOM" - -# temporary directory for diff+patch merge -HGTMP="${TMPDIR-/tmp}/hgmerge.$RAND" - -# backup file -BACKUP="$LOCAL.orig.$RAND" - -# file used to test for file change -CHGTEST="$LOCAL.chg.$RAND" - -# put all your required cleanup here -cleanup() { - rm -f "$BACKUP" "$CHGTEST" - rm -rf "$HGTMP" -} - -# functions concerning program exit -success() { - cleanup - exit 0 -} - -failure() { - echo "merge failed" 1>&2 - mv "$BACKUP" "$LOCAL" - cleanup - exit 1 -} - -# Ask if the merge was successful -ask_if_merged() { - while true; do - echo "$LOCAL seems unchanged." - echo "Was the merge successful? [y/n]" - read answer - case "$answer" in - y*|Y*) success;; - n*|N*) failure;; - esac - done -} - -# Check if conflict markers are present and ask if the merge was successful -conflicts_or_success() { - while egrep '^(<<<<<<< .*|=======|>>>>>>> .*)$' "$LOCAL" >/dev/null; do - echo "$LOCAL contains conflict markers." - echo "Keep this version? [y/n]" - read answer - case "$answer" in - y*|Y*) success;; - n*|N*) failure;; - esac - done - success -} - -# Clean up when interrupted -trap "failure" 1 2 3 6 15 # HUP INT QUIT ABRT TERM - -# Back up our file (and try hard to keep the mtime unchanged) -mv "$LOCAL" "$BACKUP" -cp "$BACKUP" "$LOCAL" - -# Attempt to do a non-interactive merge -if [ -n "$MERGE" -o -n "$DIFF3" ]; then - if [ -n "$MERGE" ]; then - $MERGE "$LOCAL" "$BASE" "$OTHER" 2> /dev/null && success - elif [ -n "$DIFF3" ]; then - $DIFF3 -m "$BACKUP" "$BASE" "$OTHER" > "$LOCAL" && success - fi - if [ $? -gt 1 ]; then - echo "automatic merge failed! Exiting." 1>&2 - failure - fi -fi - -# on MacOS X try FileMerge.app, shipped with Apple's developer tools -if [ -n "$FILEMERGE" ]; then - cp "$BACKUP" "$LOCAL" - cp "$BACKUP" "$CHGTEST" - # filemerge prefers the right by default - $FILEMERGE -left "$OTHER" -right "$LOCAL" -ancestor "$BASE" -merge "$LOCAL" - [ $? -ne 0 ] && echo "FileMerge failed to launch" && failure - $TEST "$LOCAL" -nt "$CHGTEST" && conflicts_or_success || ask_if_merged -fi - -if [ -n "$DISPLAY" ]; then - # try using kdiff3, which is fairly nice - if [ -n "$KDIFF3" ]; then - $KDIFF3 --auto "$BASE" "$BACKUP" "$OTHER" -o "$LOCAL" || failure - conflicts_or_success - fi - - # try using tkdiff, which is a bit less sophisticated - if [ -n "$TKDIFF" ]; then - $TKDIFF "$BACKUP" "$OTHER" -a "$BASE" -o "$LOCAL" || failure - conflicts_or_success - fi - - if [ -n "$MELD" ]; then - cp "$BACKUP" "$CHGTEST" - # protect our feet - meld allows us to save to the left file - cp "$BACKUP" "$LOCAL.tmp.$RAND" - # Meld doesn't have automatic merging, so to reduce intervention - # use the file with conflicts - $MELD "$LOCAL.tmp.$RAND" "$LOCAL" "$OTHER" || failure - # Also it doesn't return good error code - $TEST "$LOCAL" -nt "$CHGTEST" && conflicts_or_success || ask_if_merged - fi -fi - -# Attempt to do a merge with $EDIT_PROG -if [ -n "$MERGE" -o -n "$DIFF3" ]; then - echo "conflicts detected in $LOCAL" - cp "$BACKUP" "$CHGTEST" - case "$EDIT_PROG" in - "emacs") - $EDIT_PROG "$LOCAL" --eval '(condition-case nil (smerge-mode 1) (error nil))' || failure - ;; - *) - $EDIT_PROG "$LOCAL" || failure - ;; - esac - # Some editors do not return meaningful error codes - # Do not take any chances - $TEST "$LOCAL" -nt "$CHGTEST" && conflicts_or_success || ask_if_merged -fi - -# attempt to manually merge with diff and patch -if [ -n "$DIFF" -a -n "$PATCH" ]; then - - (umask 077 && mkdir "$HGTMP") || { - echo "Could not create temporary directory $HGTMP" 1>&2 - failure - } - - $DIFF -u "$BASE" "$OTHER" > "$HGTMP/diff" || : - if $PATCH "$LOCAL" < "$HGTMP/diff"; then - success - else - # If rejects are empty after using the editor, merge was ok - $EDIT_PROG "$LOCAL" "$LOCAL.rej" || failure - $TEST -s "$LOCAL.rej" || success - fi - failure -fi - -echo -echo "hgmerge: unable to find any merge utility!" -echo "supported programs:" -echo "merge, FileMerge, tkdiff, kdiff3, meld, diff+patch" -echo -failure
--- a/mercurial/help.py Sun Feb 03 19:29:05 2008 -0600 +++ b/mercurial/help.py Sun Feb 03 19:29:05 2008 -0600 @@ -66,9 +66,6 @@ will be executed with three arguments: local file, remote file, ancestor file. - The default program is "hgmerge", which is a shell script provided - by Mercurial with some sensible defaults. - (deprecated, use .hgrc) HGRCPATH:: @@ -97,11 +94,11 @@ This is the name of the editor to use when committing. See EDITOR. EDITOR:: - Sometimes Mercurial needs to open a text file in an editor for a user - to modify, for example when writing commit messages or when using the - hgmerge script. The editor it uses is determined by looking at the - environment variables HGEDITOR, VISUAL and EDITOR, in that order. The - first non-empty one is chosen. If all of them are empty, the editor + Sometimes Mercurial needs to open a text file in an editor + for a user to modify, for example when writing commit messages. + The editor it uses is determined by looking at the environment + variables HGEDITOR, VISUAL and EDITOR, in that order. The first + non-empty one is chosen. If all of them are empty, the editor defaults to 'vi'. PYTHONPATH::
--- a/setup.py Sun Feb 03 19:29:05 2008 -0600 +++ b/setup.py Sun Feb 03 19:29:05 2008 -0600 @@ -40,11 +40,6 @@ except ImportError: pass -if os.name in ['nt']: - extra['scripts'] = ['hg'] -else: - extra['scripts'] = ['hg', 'hgmerge'] - # specify version string, otherwise 'hg identify' will be used: version = '' @@ -77,6 +72,7 @@ url='http://selenic.com/mercurial', description='Scalable distributed SCM', license='GNU GPL', + scripts=['hg'], packages=['mercurial', 'mercurial.hgweb', 'hgext', 'hgext.convert'], ext_modules=ext_modules, data_files=[(os.path.join('mercurial', root),