Hi all,
I had those messages today
% git merge origin/master
Already uptodate!
Merge made by recursive.
%
with git version 1.7.2.rc1.210.g7b476 and I wonder if it is really
intended. It did create an empty merge commit but I find both messages
together a bit confusing here. Why would Git merge if uptodate?
I don't think I will have time to investigate in the comming weeks but
you should be able to reproduce it by following these steps (it is by
now, at least):
% git clone git://github.com/nvie/gitflow.git
% cd gitflow
% git merge origin/master
%
Thanks,
--
Nicolas Sebrecht
--
This is quite an old message; I don't think it has much to do with 1.7-ness of your version. The first "uptodate" refers to your tree state being up-to-date. You already had the necessary changes the other history wanted you to have---they were acquired in your history before you started this merge by some other means. Perhaps merging from other trees, or picking up equivalent patches from mailing list, etc. A merge commit is still created in this case, in order to record the fact that everything origin/master wanted to do to your history has already been reconciled to your history. Otherwise "git log ..origin/master" will still show commits your history does not have. --
This is what I was guessing but wanted to be sure that the resulting Thanks for the explanations. -- Nicolas Sebrecht --
In any case, "uptodate" should be written as "up-to-date" for consistency with other user-visible messages in Git and in the docs. Wincent --
Signed-off-by: Nicolas Sebrecht <nicolas.s.dev@gmx.fr>
---
merge-recursive.c | 2 +-
unpack-trees.c | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/merge-recursive.c b/merge-recursive.c
index 856e98c..fb6aa4a 100644
--- a/merge-recursive.c
+++ b/merge-recursive.c
@@ -1214,7 +1214,7 @@ int merge_trees(struct merge_options *o,
}
if (sha_eq(common->object.sha1, merge->object.sha1)) {
- output(o, 0, "Already uptodate!");
+ output(o, 0, "Already up-to-date!");
*result = head;
return 1;
}
diff --git a/unpack-trees.c b/unpack-trees.c
index 8cf0da3..024846e 100644
--- a/unpack-trees.c
+++ b/unpack-trees.c
@@ -22,7 +22,7 @@ static struct unpack_trees_error_msgs unpack_plumbing_errors = {
"Entry '%s' would be overwritten by merge. Cannot merge.",
/* not_uptodate_file */
- "Entry '%s' not uptodate. Cannot merge.",
+ "Entry '%s' not up-to-date. Cannot merge.",
/* not_uptodate_dir */
"Updating '%s' would lose untracked files in it",
@@ -34,7 +34,7 @@ static struct unpack_trees_error_msgs unpack_plumbing_errors = {
"Entry '%s' overlaps with '%s'. Cannot bind.",
/* sparse_not_uptodate_file */
- "Entry '%s' not uptodate. Cannot update sparse checkout.",
+ "Entry '%s' not up-to-date. Cannot update sparse checkout.",
/* would_lose_orphaned */
"Working tree file '%s' would be %s by sparse checkout update.",
--
1.7.2.rc1.210.g7b476
--
Did you run the tests after applying this patch? This looks like it would break: t/t7110-reset-merge.sh 176: grep file1 err.log | grep "not uptodate" 192: grep file1 err.log | grep "not uptodate" --
Signed-off-by: Nicolas Sebrecht <nicolas.s.dev@gmx.fr>
---
I forgot about them. Thanks for a reminder.
Documentation/git-checkout.txt | 2 +-
merge-recursive.c | 2 +-
t/t7110-reset-merge.sh | 4 ++--
unpack-trees.c | 4 ++--
4 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/Documentation/git-checkout.txt b/Documentation/git-checkout.txt
index 261dd90..c04eceb 100644
--- a/Documentation/git-checkout.txt
+++ b/Documentation/git-checkout.txt
@@ -263,7 +263,7 @@ the above checkout would fail like this:
+
------------
$ git checkout mytopic
-fatal: Entry 'frotz' not uptodate. Cannot merge.
+fatal: Entry 'frotz' not up-to-date. Cannot merge.
------------
+
You can give the `-m` flag to the command, which would try a
diff --git a/merge-recursive.c b/merge-recursive.c
index 856e98c..fb6aa4a 100644
--- a/merge-recursive.c
+++ b/merge-recursive.c
@@ -1214,7 +1214,7 @@ int merge_trees(struct merge_options *o,
}
if (sha_eq(common->object.sha1, merge->object.sha1)) {
- output(o, 0, "Already uptodate!");
+ output(o, 0, "Already up-to-date!");
*result = head;
return 1;
}
diff --git a/t/t7110-reset-merge.sh b/t/t7110-reset-merge.sh
index 70cdd8e..6a5f78d 100755
--- a/t/t7110-reset-merge.sh
+++ b/t/t7110-reset-merge.sh
@@ -173,7 +173,7 @@ test_expect_success 'reset --merge fails with changes in file it touches' '
sed -e "s/line 1/changed line 1/" <file1 >file3 &&
mv file3 file1 &&
test_must_fail git reset --merge HEAD^ 2>err.log &&
- grep file1 err.log | grep "not uptodate"
+ grep file1 err.log | grep "not up-to-date"
'
# The next test will test the following:
@@ -189,7 +189,7 @@ test_expect_success 'reset --keep fails with changes in file it touches' '
sed -e "s/line 1/changed line 1/" <file1 >file3 &&
mv file3 file1 &&
test_must_fail git reset --keep HEAD^ 2>err.log &&
- grep file1 err.log | grep "not uptodate"
+ grep file1 err.log | ...What word do you see before "errors" on the hunk comment line? --
So you'd rather not touching it? Or wait until the next release cycle? Or a better commit message? Anything else? -- Nicolas Sebrecht --
Well, "'d rather" is actually too weak a statement. The "struct unpack_trees_error_msgs" mechanism was introduced so that we can change the Porcelain level messages without breaking the plumbing API, which these messages are part of. Please see 8ccba00 (unpack-trees: allow Porcelain to give different error messages, 2008-05-17) and fadd069 (merge-recursive: give less scary messages when merge did not start, 2009-09-07) for backstory. --
Signed-off-by: Nicolas Sebrecht <nicolas.s.dev@gmx.fr>
---
Oh, thanks. I was unaware of this mechanism and didn't care about what I was
touching.
Documentation/git-checkout.txt | 2 +-
merge-recursive.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/Documentation/git-checkout.txt b/Documentation/git-checkout.txt
index 261dd90..c04eceb 100644
--- a/Documentation/git-checkout.txt
+++ b/Documentation/git-checkout.txt
@@ -263,7 +263,7 @@ the above checkout would fail like this:
+
------------
$ git checkout mytopic
-fatal: Entry 'frotz' not uptodate. Cannot merge.
+fatal: Entry 'frotz' not up-to-date. Cannot merge.
------------
+
You can give the `-m` flag to the command, which would try a
diff --git a/merge-recursive.c b/merge-recursive.c
index 856e98c..fb6aa4a 100644
--- a/merge-recursive.c
+++ b/merge-recursive.c
@@ -1214,7 +1214,7 @@ int merge_trees(struct merge_options *o,
}
if (sha_eq(common->object.sha1, merge->object.sha1)) {
- output(o, 0, "Already uptodate!");
+ output(o, 0, "Already up-to-date!");
*result = head;
return 1;
}
--
1.7.2.rc1.214.g95a9e
--
I suspect that the documentation patch talks about a nonexistent reality. See 8ccba00 again ;-) --
Signed-off-by: Nicolas Sebrecht <nicolas.s.dev@gmx.fr> --- Doh! You said in this commit that "If you do not see something wrong with this output, your brain has already been rotten with use of git for too long a time." but I claim the right to be rotten in much more ways. :-) Documentation/git-checkout.txt | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/Documentation/git-checkout.txt b/Documentation/git-checkout.txt index 261dd90..1bacd2e 100644 --- a/Documentation/git-checkout.txt +++ b/Documentation/git-checkout.txt @@ -263,7 +263,7 @@ the above checkout would fail like this: + ------------ $ git checkout mytopic -fatal: Entry 'frotz' not uptodate. Cannot merge. +error: You have local changes to 'frotz'; not switching branches. ------------ + You can give the `-m` flag to the command, which would try a -- 1.7.2.rc2.194.g494e9.dirty --
Signed-off-by: Nicolas Sebrecht <nicolas.s.dev@gmx.fr>
---
merge-recursive.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/merge-recursive.c b/merge-recursive.c
index 856e98c..fb6aa4a 100644
--- a/merge-recursive.c
+++ b/merge-recursive.c
@@ -1214,7 +1214,7 @@ int merge_trees(struct merge_options *o,
}
if (sha_eq(common->object.sha1, merge->object.sha1)) {
- output(o, 0, "Already uptodate!");
+ output(o, 0, "Already up-to-date!");
*result = head;
return 1;
}
--
1.7.2.rc2.194.g494e9.dirty
--
Sorry, but the pros-and-cons is not good enough for me to support this change. It will break users who have been parsing output with scripts. We do strongly warn people against relying on Porcelain output, but that does not mean we are free to change them without having a good reason or two. The new spelling won't help the next reader who will find the message confusing the same way you did a few days ago. IOW, if we are touching this line anyway, I'd like to make sure we made an effort to make it less confusing, not just spelled correctly, while we still have our memory of confusion fresh ;-) --
