diff --git a/.gitignore b/.gitignore index d99372afc4..f15155d1b7 100644 --- a/.gitignore +++ b/.gitignore @@ -33,7 +33,6 @@ git-daemon git-diff git-diff-files git-diff-index -git-diff-stages git-diff-tree git-describe git-fast-import @@ -101,7 +100,6 @@ git-repo-config git-request-pull git-rerere git-reset -git-resolve git-rev-list git-rev-parse git-revert diff --git a/Documentation/cmd-list.perl b/Documentation/cmd-list.perl index 69003e90af..d4fd72db4c 100755 --- a/Documentation/cmd-list.perl +++ b/Documentation/cmd-list.perl @@ -90,7 +90,6 @@ git-describe mainporcelain git-diff-files plumbinginterrogators git-diff-index plumbinginterrogators git-diff mainporcelain -git-diff-stages plumbinginterrogators git-diff-tree plumbinginterrogators git-fast-import ancillarymanipulators git-fetch mainporcelain @@ -149,7 +148,6 @@ git-config ancillarymanipulators git-request-pull foreignscminterface git-rerere ancillaryinterrogators git-reset mainporcelain -git-resolve mainporcelain git-revert mainporcelain git-rev-list plumbinginterrogators git-rev-parse ancillaryinterrogators diff --git a/Documentation/core-intro.txt b/Documentation/core-intro.txt index abafefc71c..24b060b91e 100644 --- a/Documentation/core-intro.txt +++ b/Documentation/core-intro.txt @@ -587,4 +587,5 @@ stages to temporary files and calls a "merge" script on it: git-merge-index git-merge-one-file hello.c -and that is what higher level `git resolve` is implemented with. +and that is what higher level `git merge -s resolve` is implemented +with. diff --git a/Documentation/core-tutorial.txt b/Documentation/core-tutorial.txt index 9c28bea62e..97cdb90cb4 100644 --- a/Documentation/core-tutorial.txt +++ b/Documentation/core-tutorial.txt @@ -977,7 +977,7 @@ see more complex cases. Now, let's pretend you are the one who did all the work in `mybranch`, and the fruit of your hard work has finally been merged to the `master` branch. Let's go back to `mybranch`, and run -resolve to get the "upstream changes" back to your branch. +`git merge` to get the "upstream changes" back to your branch. ------------ $ git checkout mybranch @@ -996,7 +996,7 @@ Fast forward ---------------- Because your branch did not contain anything more than what are -already merged into the `master` branch, the resolve operation did +already merged into the `master` branch, the merge operation did not actually do a merge. Instead, it just updated the top of the tree of your branch to that of the `master` branch. This is often called 'fast forward' merge. @@ -1099,11 +1099,11 @@ programs, which are 'commit walkers'; they outlived their usefulness when git Native and SSH transports were introduced, and not used by `git pull` or `git push` scripts. -Once you fetch from the remote repository, you `resolve` that +Once you fetch from the remote repository, you `merge` that with your current branch. However -- it's such a common thing to `fetch` and then -immediately `resolve`, that it's called `git pull`, and you can +immediately `merge`, that it's called `git pull`, and you can simply do ---------------- diff --git a/Documentation/diffcore.txt b/Documentation/diffcore.txt index cb4e562004..34cd306bb1 100644 --- a/Documentation/diffcore.txt +++ b/Documentation/diffcore.txt @@ -6,8 +6,8 @@ June 2005 Introduction ------------ -The diff commands git-diff-index, git-diff-files, git-diff-tree, and -git-diff-stages can be told to manipulate differences they find in +The diff commands git-diff-index, git-diff-files, and git-diff-tree +can be told to manipulate differences they find in unconventional ways before showing diff(1) output. The manipulation is collectively called "diffcore transformation". This short note describes what they are and how to use them to produce diff outputs @@ -30,9 +30,6 @@ files: - git-diff-tree compares contents of two "tree" objects; - - git-diff-stages compares contents of blobs at two stages in an - unmerged index file. - In all of these cases, the commands themselves compare corresponding paths in the two sets of files. The result of comparison is passed from these commands to what is internally diff --git a/Documentation/git-diff-stages.txt b/Documentation/git-diff-stages.txt deleted file mode 100644 index b8f45b8cdc..0000000000 --- a/Documentation/git-diff-stages.txt +++ /dev/null @@ -1,42 +0,0 @@ -git-diff-stages(1) -================== - -NAME ----- -git-diff-stages - Compares two merge stages in the index - - -SYNOPSIS --------- -'git-diff-stages' [] [...] - -DESCRIPTION ------------ -DEPRECATED and will be removed in 1.5.1. - -Compares the content and mode of the blobs in two stages in an -unmerged index file. - -OPTIONS -------- -include::diff-options.txt[] - -,:: - The stage number to be compared. - -Output format -------------- -include::diff-format.txt[] - - -Author ------- -Written by Junio C Hamano - -Documentation --------------- -Documentation by Junio C Hamano. - -GIT ---- -Part of the gitlink:git[7] suite diff --git a/Documentation/git-resolve.txt b/Documentation/git-resolve.txt deleted file mode 100644 index 7fde665fb5..0000000000 --- a/Documentation/git-resolve.txt +++ /dev/null @@ -1,38 +0,0 @@ -git-resolve(1) -============== - -NAME ----- -git-resolve - Merge two commits - - -SYNOPSIS --------- -'git-resolve' - -DESCRIPTION ------------ -DEPRECATED and will be removed in 1.5.1. Use `git-merge` instead. - -Given two commits and a merge message, merge the commit -into commit, with the commit log message . - -When is a descendant of , or is an -ancestor of , no new commit is created and the -is ignored. The former is informally called "already up to -date", and the latter is often called "fast forward". - - -Author ------- -Written by Linus Torvalds and -Dan Holmsand . - -Documentation --------------- -Documentation by David Greaves, Junio C Hamano and the git-list . - -GIT ---- -Part of the gitlink:git[7] suite - diff --git a/Documentation/howto/revert-branch-rebase.txt b/Documentation/howto/revert-branch-rebase.txt index d10476b56e..d88ec23a97 100644 --- a/Documentation/howto/revert-branch-rebase.txt +++ b/Documentation/howto/revert-branch-rebase.txt @@ -85,7 +85,7 @@ Fortunately I did not have to; what I have in the current branch ------------------------------------------------ $ git checkout master -$ git resolve master revert-c99 fast ;# this should be a fast forward +$ git merge revert-c99 ;# this should be a fast forward Updating from 10d781b9caa4f71495c7b34963bef137216f86a8 to e3a693c... cache.h | 8 ++++---- commit.c | 2 +- @@ -95,13 +95,6 @@ Updating from 10d781b9caa4f71495c7b34963bef137216f86a8 to e3a693c... 5 files changed, 8 insertions(+), 8 deletions(-) ------------------------------------------------ -The 'fast' in the above 'git resolve' is not a magic. I knew this -'resolve' would result in a fast forward merge, and if not, there is -something very wrong (so I would do 'git reset' on the 'master' branch -and examine the situation). When a fast forward merge is done, the -message parameter to 'git resolve' is discarded, because no new commit -is created. You could have said 'junk' or 'nothing' there as well. - There is no need to redo the test at this point. We fast forwarded and we know 'master' matches 'revert-c99' exactly. In fact: diff --git a/Documentation/user-manual.txt b/Documentation/user-manual.txt index c5e9ea8a42..03736bbcd3 100644 --- a/Documentation/user-manual.txt +++ b/Documentation/user-manual.txt @@ -2755,7 +2755,7 @@ stages to temporary files and calls a "merge" script on it: $ git-merge-index git-merge-one-file hello.c ------------------------------------------------- -and that is what higher level `git resolve` is implemented with. +and that is what higher level `git merge -s resolve` is implemented with. How git stores objects efficiently: pack files ---------------------------------------------- diff --git a/Makefile b/Makefile index 40bdcff696..e38cb9f61c 100644 --- a/Makefile +++ b/Makefile @@ -172,7 +172,7 @@ SCRIPT_SH = \ git-merge-one-file.sh git-parse-remote.sh \ git-pull.sh git-rebase.sh \ git-repack.sh git-request-pull.sh git-reset.sh \ - git-resolve.sh git-revert.sh git-sh-setup.sh \ + git-revert.sh git-sh-setup.sh \ git-tag.sh git-verify-tag.sh \ git-applymbox.sh git-applypatch.sh git-am.sh \ git-merge.sh git-merge-stupid.sh git-merge-octopus.sh \ @@ -280,7 +280,6 @@ BUILTIN_OBJS = \ builtin-diff.o \ builtin-diff-files.o \ builtin-diff-index.o \ - builtin-diff-stages.o \ builtin-diff-tree.o \ builtin-fmt-merge-msg.o \ builtin-for-each-ref.o \ diff --git a/builtin-diff-stages.c b/builtin-diff-stages.c deleted file mode 100644 index 70bb89808d..0000000000 --- a/builtin-diff-stages.c +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright (c) 2005 Junio C Hamano - */ - -#include "cache.h" -#include "diff.h" -#include "builtin.h" - -static struct diff_options diff_options; - -static const char diff_stages_usage[] = -"git-diff-stages [] [...]" -COMMON_DIFF_OPTIONS_HELP; - -static void diff_stages(int stage1, int stage2, const char **pathspec) -{ - int i = 0; - while (i < active_nr) { - struct cache_entry *ce, *stages[4] = { NULL, }; - struct cache_entry *one, *two; - const char *name; - int len, skip; - - ce = active_cache[i]; - skip = !ce_path_match(ce, pathspec); - len = ce_namelen(ce); - name = ce->name; - for (;;) { - int stage = ce_stage(ce); - stages[stage] = ce; - if (active_nr <= ++i) - break; - ce = active_cache[i]; - if (ce_namelen(ce) != len || - memcmp(name, ce->name, len)) - break; - } - one = stages[stage1]; - two = stages[stage2]; - - if (skip || (!one && !two)) - continue; - if (!one) - diff_addremove(&diff_options, '+', ntohl(two->ce_mode), - two->sha1, name, NULL); - else if (!two) - diff_addremove(&diff_options, '-', ntohl(one->ce_mode), - one->sha1, name, NULL); - else if (hashcmp(one->sha1, two->sha1) || - (one->ce_mode != two->ce_mode) || - diff_options.find_copies_harder) - diff_change(&diff_options, - ntohl(one->ce_mode), ntohl(two->ce_mode), - one->sha1, two->sha1, name, NULL); - } -} - -int cmd_diff_stages(int ac, const char **av, const char *prefix) -{ - int stage1, stage2; - const char **pathspec = NULL; - - git_config(git_default_config); /* no "diff" UI options */ - read_cache(); - diff_setup(&diff_options); - while (1 < ac && av[1][0] == '-') { - const char *arg = av[1]; - if (!strcmp(arg, "-r")) - ; /* as usual */ - else { - int diff_opt_cnt; - diff_opt_cnt = diff_opt_parse(&diff_options, - av+1, ac-1); - if (diff_opt_cnt < 0) - usage(diff_stages_usage); - else if (diff_opt_cnt) { - av += diff_opt_cnt; - ac -= diff_opt_cnt; - continue; - } - else - usage(diff_stages_usage); - } - ac--; av++; - } - - if (!diff_options.output_format) - diff_options.output_format = DIFF_FORMAT_RAW; - - if (ac < 3 || - sscanf(av[1], "%d", &stage1) != 1 || - ! (0 <= stage1 && stage1 <= 3) || - sscanf(av[2], "%d", &stage2) != 1 || - ! (0 <= stage2 && stage2 <= 3)) - usage(diff_stages_usage); - - av += 3; /* The rest from av[0] are for paths restriction. */ - pathspec = get_pathspec(prefix, av); - - if (diff_setup_done(&diff_options) < 0) - usage(diff_stages_usage); - - diff_stages(stage1, stage2, pathspec); - diffcore_std(&diff_options); - diff_flush(&diff_options); - return 0; -} diff --git a/builtin.h b/builtin.h index 5108fd2d74..7160148239 100644 --- a/builtin.h +++ b/builtin.h @@ -29,7 +29,6 @@ extern int cmd_describe(int argc, const char **argv, const char *prefix); extern int cmd_diff_files(int argc, const char **argv, const char *prefix); extern int cmd_diff_index(int argc, const char **argv, const char *prefix); extern int cmd_diff(int argc, const char **argv, const char *prefix); -extern int cmd_diff_stages(int argc, const char **argv, const char *prefix); extern int cmd_diff_tree(int argc, const char **argv, const char *prefix); extern int cmd_fmt_merge_msg(int argc, const char **argv, const char *prefix); extern int cmd_for_each_ref(int argc, const char **argv, const char *prefix); diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 5d3d402051..7c03403484 100755 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -269,7 +269,6 @@ __git_commands () cvsimport) : import;; cvsserver) : daemon;; daemon) : daemon;; - diff-stages) : nobody uses it;; fast-import) : import;; fsck-objects) : plumbing;; fetch-pack) : plumbing;; @@ -298,7 +297,6 @@ __git_commands () reflog) : plumbing;; repo-config) : plumbing;; rerere) : plumbing;; - resolve) : dead dont use;; rev-list) : plumbing;; rev-parse) : plumbing;; runstatus) : plumbing;; diff --git a/git-resolve.sh b/contrib/examples/git-resolve.sh similarity index 100% rename from git-resolve.sh rename to contrib/examples/git-resolve.sh diff --git a/git.c b/git.c index 45265f14d0..6e6c44822c 100644 --- a/git.c +++ b/git.c @@ -240,7 +240,6 @@ static void handle_internal_command(int argc, const char **argv, char **envp) { "diff", cmd_diff, RUN_SETUP | USE_PAGER }, { "diff-files", cmd_diff_files, RUN_SETUP }, { "diff-index", cmd_diff_index, RUN_SETUP }, - { "diff-stages", cmd_diff_stages, RUN_SETUP }, { "diff-tree", cmd_diff_tree, RUN_SETUP }, { "fmt-merge-msg", cmd_fmt_merge_msg, RUN_SETUP }, { "for-each-ref", cmd_for_each_ref, RUN_SETUP }, diff --git a/t/t1200-tutorial.sh b/t/t1200-tutorial.sh index eebe643bda..ca2c30f7af 100755 --- a/t/t1200-tutorial.sh +++ b/t/t1200-tutorial.sh @@ -101,7 +101,9 @@ echo "Play, play, play" >>hello echo "Lots of fun" >>example git commit -m 'Some fun.' -i hello example -test_expect_failure 'git resolve now fails' 'git resolve HEAD mybranch "Merge work in mybranch"' +test_expect_failure 'git resolve now fails' ' + git merge -m "Merge work in mybranch" mybranch +' cat > hello << EOF Hello World @@ -134,8 +136,8 @@ Updating from VARIABLE to VARIABLE 2 files changed, 2 insertions(+), 0 deletions(-) EOF -git resolve HEAD master "Merge upstream changes." | \ - sed -e "1s/[0-9a-f]\{40\}/VARIABLE/g" > resolve.output +git merge -s "Merge upstream changes." master | \ + sed -e "1s/[0-9a-f]\{40\}/VARIABLE/g" >resolve.output test_expect_success 'git resolve' 'cmp resolve.expect resolve.output' cat > show-branch2.expect << EOF