Merge branch 'jc/deprecate'

As previously announced, diff-stages and resolve are now gone.
maint
Junio C Hamano 2007-02-13 16:44:27 -08:00
commit f8f2aaa172
16 changed files with 16 additions and 219 deletions

2
.gitignore vendored
View File

@ -33,7 +33,6 @@ git-daemon
git-diff git-diff
git-diff-files git-diff-files
git-diff-index git-diff-index
git-diff-stages
git-diff-tree git-diff-tree
git-describe git-describe
git-fast-import git-fast-import
@ -101,7 +100,6 @@ git-repo-config
git-request-pull git-request-pull
git-rerere git-rerere
git-reset git-reset
git-resolve
git-rev-list git-rev-list
git-rev-parse git-rev-parse
git-revert git-revert

View File

@ -90,7 +90,6 @@ git-describe mainporcelain
git-diff-files plumbinginterrogators git-diff-files plumbinginterrogators
git-diff-index plumbinginterrogators git-diff-index plumbinginterrogators
git-diff mainporcelain git-diff mainporcelain
git-diff-stages plumbinginterrogators
git-diff-tree plumbinginterrogators git-diff-tree plumbinginterrogators
git-fast-import ancillarymanipulators git-fast-import ancillarymanipulators
git-fetch mainporcelain git-fetch mainporcelain
@ -149,7 +148,6 @@ git-config ancillarymanipulators
git-request-pull foreignscminterface git-request-pull foreignscminterface
git-rerere ancillaryinterrogators git-rerere ancillaryinterrogators
git-reset mainporcelain git-reset mainporcelain
git-resolve mainporcelain
git-revert mainporcelain git-revert mainporcelain
git-rev-list plumbinginterrogators git-rev-list plumbinginterrogators
git-rev-parse ancillaryinterrogators git-rev-parse ancillaryinterrogators

View File

@ -587,4 +587,5 @@ stages to temporary files and calls a "merge" script on it:


git-merge-index git-merge-one-file hello.c 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.

View File

@ -977,7 +977,7 @@ see more complex cases.
Now, let's pretend you are the one who did all the work in 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 `mybranch`, and the fruit of your hard work has finally been merged
to the `master` branch. Let's go back to `mybranch`, and run 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 $ git checkout mybranch
@ -996,7 +996,7 @@ Fast forward
---------------- ----------------


Because your branch did not contain anything more than what are 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 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 the tree of your branch to that of the `master` branch. This is
often called 'fast forward' merge. 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, usefulness when git Native and SSH transports were introduced,
and not used by `git pull` or `git push` scripts. 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. with your current branch.


However -- it's such a common thing to `fetch` and then 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 simply do


---------------- ----------------

View File

@ -6,8 +6,8 @@ June 2005
Introduction Introduction
------------ ------------


The diff commands git-diff-index, git-diff-files, git-diff-tree, and The diff commands git-diff-index, git-diff-files, and git-diff-tree
git-diff-stages can be told to manipulate differences they find in can be told to manipulate differences they find in
unconventional ways before showing diff(1) output. The manipulation unconventional ways before showing diff(1) output. The manipulation
is collectively called "diffcore transformation". This short note is collectively called "diffcore transformation". This short note
describes what they are and how to use them to produce diff outputs 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-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 In all of these cases, the commands themselves compare
corresponding paths in the two sets of files. The result of corresponding paths in the two sets of files. The result of
comparison is passed from these commands to what is internally comparison is passed from these commands to what is internally

View File

@ -1,42 +0,0 @@
git-diff-stages(1)
==================

NAME
----
git-diff-stages - Compares two merge stages in the index


SYNOPSIS
--------
'git-diff-stages' [<common diff options>] <stage1> <stage2> [<path>...]

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[]

<stage1>,<stage2>::
The stage number to be compared.

Output format
-------------
include::diff-format.txt[]


Author
------
Written by Junio C Hamano <junkio@cox.net>

Documentation
--------------
Documentation by Junio C Hamano.

GIT
---
Part of the gitlink:git[7] suite

View File

@ -1,38 +0,0 @@
git-resolve(1)
==============

NAME
----
git-resolve - Merge two commits


SYNOPSIS
--------
'git-resolve' <current> <merged> <message>

DESCRIPTION
-----------
DEPRECATED and will be removed in 1.5.1. Use `git-merge` instead.

Given two commits and a merge message, merge the <merged> commit
into <current> commit, with the commit log message <message>.

When <current> is a descendant of <merged>, or <current> is an
ancestor of <merged>, no new commit is created and the <message>
is ignored. The former is informally called "already up to
date", and the latter is often called "fast forward".


Author
------
Written by Linus Torvalds <torvalds@osdl.org> and
Dan Holmsand <holmsand@gmail.com>.

Documentation
--------------
Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.

GIT
---
Part of the gitlink:git[7] suite

View File

@ -85,7 +85,7 @@ Fortunately I did not have to; what I have in the current branch


------------------------------------------------ ------------------------------------------------
$ git checkout master $ 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... Updating from 10d781b9caa4f71495c7b34963bef137216f86a8 to e3a693c...
cache.h | 8 ++++---- cache.h | 8 ++++----
commit.c | 2 +- commit.c | 2 +-
@ -95,13 +95,6 @@ Updating from 10d781b9caa4f71495c7b34963bef137216f86a8 to e3a693c...
5 files changed, 8 insertions(+), 8 deletions(-) 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 There is no need to redo the test at this point. We fast forwarded
and we know 'master' matches 'revert-c99' exactly. In fact: and we know 'master' matches 'revert-c99' exactly. In fact:



View File

@ -2755,7 +2755,7 @@ stages to temporary files and calls a "merge" script on it:
$ git-merge-index git-merge-one-file hello.c $ 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 How git stores objects efficiently: pack files
---------------------------------------------- ----------------------------------------------

View File

@ -172,7 +172,7 @@ SCRIPT_SH = \
git-merge-one-file.sh git-parse-remote.sh \ git-merge-one-file.sh git-parse-remote.sh \
git-pull.sh git-rebase.sh \ git-pull.sh git-rebase.sh \
git-repack.sh git-request-pull.sh git-reset.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-tag.sh git-verify-tag.sh \
git-applymbox.sh git-applypatch.sh git-am.sh \ git-applymbox.sh git-applypatch.sh git-am.sh \
git-merge.sh git-merge-stupid.sh git-merge-octopus.sh \ git-merge.sh git-merge-stupid.sh git-merge-octopus.sh \
@ -280,7 +280,6 @@ BUILTIN_OBJS = \
builtin-diff.o \ builtin-diff.o \
builtin-diff-files.o \ builtin-diff-files.o \
builtin-diff-index.o \ builtin-diff-index.o \
builtin-diff-stages.o \
builtin-diff-tree.o \ builtin-diff-tree.o \
builtin-fmt-merge-msg.o \ builtin-fmt-merge-msg.o \
builtin-for-each-ref.o \ builtin-for-each-ref.o \

View File

@ -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>] <stage1> <stage2> [<path>...]"
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;
}

View File

@ -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_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_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(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_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_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); extern int cmd_for_each_ref(int argc, const char **argv, const char *prefix);

View File

@ -269,7 +269,6 @@ __git_commands ()
cvsimport) : import;; cvsimport) : import;;
cvsserver) : daemon;; cvsserver) : daemon;;
daemon) : daemon;; daemon) : daemon;;
diff-stages) : nobody uses it;;
fast-import) : import;; fast-import) : import;;
fsck-objects) : plumbing;; fsck-objects) : plumbing;;
fetch-pack) : plumbing;; fetch-pack) : plumbing;;
@ -298,7 +297,6 @@ __git_commands ()
reflog) : plumbing;; reflog) : plumbing;;
repo-config) : plumbing;; repo-config) : plumbing;;
rerere) : plumbing;; rerere) : plumbing;;
resolve) : dead dont use;;
rev-list) : plumbing;; rev-list) : plumbing;;
rev-parse) : plumbing;; rev-parse) : plumbing;;
runstatus) : plumbing;; runstatus) : plumbing;;

1
git.c
View File

@ -240,7 +240,6 @@ static void handle_internal_command(int argc, const char **argv, char **envp)
{ "diff", cmd_diff, RUN_SETUP | USE_PAGER }, { "diff", cmd_diff, RUN_SETUP | USE_PAGER },
{ "diff-files", cmd_diff_files, RUN_SETUP }, { "diff-files", cmd_diff_files, RUN_SETUP },
{ "diff-index", cmd_diff_index, RUN_SETUP }, { "diff-index", cmd_diff_index, RUN_SETUP },
{ "diff-stages", cmd_diff_stages, RUN_SETUP },
{ "diff-tree", cmd_diff_tree, RUN_SETUP }, { "diff-tree", cmd_diff_tree, RUN_SETUP },
{ "fmt-merge-msg", cmd_fmt_merge_msg, RUN_SETUP }, { "fmt-merge-msg", cmd_fmt_merge_msg, RUN_SETUP },
{ "for-each-ref", cmd_for_each_ref, RUN_SETUP }, { "for-each-ref", cmd_for_each_ref, RUN_SETUP },

View File

@ -101,7 +101,9 @@ echo "Play, play, play" >>hello
echo "Lots of fun" >>example echo "Lots of fun" >>example
git commit -m 'Some fun.' -i hello 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 cat > hello << EOF
Hello World Hello World
@ -134,7 +136,7 @@ Updating from VARIABLE to VARIABLE
2 files changed, 2 insertions(+), 0 deletions(-) 2 files changed, 2 insertions(+), 0 deletions(-)
EOF EOF


git resolve HEAD master "Merge upstream changes." | \ git merge -s "Merge upstream changes." master | \
sed -e "1s/[0-9a-f]\{40\}/VARIABLE/g" >resolve.output sed -e "1s/[0-9a-f]\{40\}/VARIABLE/g" >resolve.output
test_expect_success 'git resolve' 'cmp resolve.expect resolve.output' test_expect_success 'git resolve' 'cmp resolve.expect resolve.output'