From: linux@horizon.com
To: junkio@cox.net
Cc: git@vger.kernel.org, linux@horizon.com
Subject: Re: More merge questions (why doesn't this work?)
Date: 2 Dec 2005 06:37:13 -0500 [thread overview]
Message-ID: <20051202113713.11618.qmail@science.horizon.com> (raw)
In-Reply-To: <20051202091946.1631.qmail@science.horizon.com>
> Yes. The reason is git-read-tree's behaviour was changed
> underneath while octopus was looking elsewhere ;-). See
> Documentation/technical/trivial-merge.txt, last couple of
> lines.
> There are two schools of thoughts about "both sides remove"
> (case #10) case.
Um, I'm looking at the one-side remove case, which t/t1000 calls
O A B result index requirements
-------------------------------------------------------------------
10 exists O==A missing remove ditto
------------------------------------------------------------------
while trivial-merge.txt says is:
case ancest head remote result
----------------------------------------
10 ancest^ ancest (empty) no merge
I assumed the test case was probably more accurate, given that it's coupled
to code which actually verifies the behaviour.
> Some people argued that "the branches might
> have renamed that path to different paths and might indicate a
> rename/rename conflict" (meaning read-tree should not consider
> it trivial, and leave that to upper level "policy layer" to
> decide). merge-one-file policy simply says "no, they both
> wanted to remove them". If I recall correctly, read-tree itself
> merged this case before multi-base rewrite happened (if you are
> curious, run 'git whatchanged -p read-tree.c' and look for
> "Rewrite read-tree").
Aren't you talking about case #6?
O A B result index requirements
-------------------------------------------------------------------
6 exists missing missing remove must not exist.
------------------------------------------------------------------
case ancest head remote result
----------------------------------------
6 ancest+ (empty) (empty) no merge
>> 1) The MAJOR difference between "git checkout" and "git reset --hard"
> True. "git reset --hard" should be used without <rev> by
> novices and with <rev> after they understand what they are
> doing (it is used for rewinding/warping heads).
For the longest time I had been under the delusion that
"git-checkout <branch> *" and "git-reset --hard <branch>"
were very similar operations (modulo your comments about
deleting files): overwrite the index and working directory
files with the versions from that branch.
It's hard to say how much I managed to confuse myself by
damaging test repositories while I didn't understand what was
going on.
>> 2) Don't use "git branch" to create branches, unless you really
>> *don't* want to switch to them. Use "git checkout -b".
> Because...? "git branch foo && git checkout foo" may be
> suboptimal to type, but it is not _wrong_; it does not do
> anything bad or incorrect.
Yes, I know it works. I suggest avoiding it because there's a much
more convenient alternative and I kept forgetting the second half and
checking my changes in to the wrong branch.
>> 3) Dumb question: why does "git-commit-tree" need "-p" before the
>> parent commit arguments? Isn't just argv[2]..argv[argc-1]
>> good enough?
> 1. Why not?
> 3. It does not matter; nobody types that command by hand.
Because it's a real pain to get it properly quoted and set up
in a shell script. "$@" is a lot simpler and easier, and
old /bin/sh only has the one array which provides that magic
quoting behaviour.
(Admittedly, you usually pass the arguments through git-rev-parse
first, and are then guaranteed no embedded whitespace.)
> 4. It allows us to later add some other flags to commit-tree
> (none planned currently).
Making it disappear wouldn't preclude having more options, either,
any more than the variable number of arguments to cp(1) or mv(1)...
>> 4) If the "git-read-tree" docs for "--reset", does "ignored" mean
>> "not overwritten" or "overwritten"?
> That sentence is very poorly written; a better paraphrasing is
> appreciated.
diff --git a/Documentation/git-read-tree.txt b/Documentation/git-read-tree.txt
index 8b91847..47e2f93 100644
--- a/Documentation/git-read-tree.txt
+++ b/Documentation/git-read-tree.txt
@@ -31,8 +31,8 @@ OPTIONS
Perform a merge, not just a read.
--reset::
-
- Same as -m except that unmerged entries will be silently ignored.
+ Same as -m except that unmerged entries will be silently overwritten
+ (instead of failing).
-u::
After a successful merge, update the files in the work
@@ -47,7 +47,6 @@ OPTIONS
trees that are not directly related to the current
working tree status into a temporary index file.
-
<tree-ish#>::
The id of the tree object(s) to be read/merged.
>> 5) The final "error" message on "git-merge --no-commit" is a bit
>> alarming for a newbie who uses it...
> First of all, --no-commit is not meant to be used by newbies,
> but you are right.
Well, I can tell you that it's very very attractive to newbies.
The first 5 or 10 times I tried git-merge, I used --no-commit.
(My surprise was mostly that there wasn't a one-letter -x form.)
"Do something really complicated and then commit it to the repository"
is a frightening concept. "Do something really complicated and
then stop and wait for you to see if it was what you expected" is
a lot more comforting.
>> 6) The "pickaxe" options are being a bit confusing, and the fact they're
>> only documented in cvs-migration.txt doesn't help.
> Docs of git-diff-* family have OPTIONS section, at the end of
> which refers you to the diffcore documentation. Suggestions to
> a better organization and a patch is appropriate here.
That's a bigger job; I'll work on it when I've finished the docs I'm
writing right. :-)
>> 7) The git-tag man page could use a little better description of -a.
> Please. It should have the same "OPTIONS" section as others do.
I know NOTHING about asciidoc, and really wish I could fix its
lack-of-line-break problem:
GIT-BISECT(1) GIT-BISECT(1)
NAME
git-bisect - Find the change that introduced a bug
SYNOPSIS
git bisect start git bisect bad <rev> git bisect good <rev> git bisect
reset [<branch>] git bisect visualize git bisect replay <logfile> git
bisect log
but emulating what I saw elsewhere...
diff --git a/Documentation/git-tag.txt b/Documentation/git-tag.txt
index 95de436..7635b1e 100644
--- a/Documentation/git-tag.txt
+++ b/Documentation/git-tag.txt
@@ -10,6 +10,26 @@ SYNOPSIS
--------
'git-tag' [-a | -s | -u <key-id>] [-f | -d] [-m <msg>] <name> [<head>]
+OPTIONS
+-------
+-a::
+ Make an unsigned (anotation) tag object
+
+-s::
+ Make a GPG-signed tag, using the default e-mail address's key
+
+-u <key-id>::
+ Make a GPG-signed tag, using the given key
+
+-f::
+ Replace an existing tag with the given name (instead of failing)
+
+-d::
+ Delete an existing tag with the given name
+
+-m <msg>::
+ Use the given tag message (instead of prompting)
+
DESCRIPTION
-----------
Adds a 'tag' reference in .git/refs/tags/
@@ -23,7 +43,7 @@ creates a 'tag' object, and requires the
in the tag message.
Otherwise just the SHA1 object name of the commit object is
-written (i.e. an lightweight tag).
+written (i.e. a lightweight tag).
A GnuPG signed tag object will be created when `-s` or `-u
<key-id>` is used. When `-u <key-id>` is not used, the
next prev parent reply other threads:[~2005-12-02 11:37 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-11-28 23:42 git-name-rev off-by-one bug linux
2005-11-29 5:54 ` Junio C Hamano
2005-11-29 8:05 ` linux
2005-11-29 9:29 ` Junio C Hamano
2005-11-30 8:37 ` Junio C Hamano
2005-11-29 10:31 ` Petr Baudis
2005-11-29 18:46 ` Junio C Hamano
2005-12-04 21:34 ` Petr Baudis
2005-12-08 6:34 ` as promised, docs: git for the confused linux
2005-12-08 21:53 ` Junio C Hamano
2005-12-08 22:02 ` H. Peter Anvin
2005-12-09 0:47 ` Alan Chandler
2005-12-09 1:45 ` Petr Baudis
2005-12-09 1:19 ` Josef Weidendorfer
2005-11-29 21:40 ` git-name-rev off-by-one bug linux
2005-11-29 23:14 ` Junio C Hamano
2005-11-30 0:15 ` linux
2005-11-30 0:53 ` Junio C Hamano
2005-11-30 1:27 ` Junio C Hamano
2005-11-30 1:51 ` Linus Torvalds
2005-11-30 2:06 ` Junio C Hamano
2005-11-30 2:33 ` Junio C Hamano
2005-11-30 3:12 ` Linus Torvalds
2005-11-30 5:06 ` Linus Torvalds
2005-11-30 5:51 ` Junio C Hamano
2005-11-30 6:11 ` Junio C Hamano
2005-11-30 16:13 ` Linus Torvalds
2005-11-30 16:08 ` Linus Torvalds
2005-12-02 8:25 ` Junio C Hamano
2005-12-02 9:14 ` [PATCH] merge-one-file: make sure we create the merged file Junio C Hamano
2005-12-02 9:15 ` [PATCH] merge-one-file: make sure we do not mismerge symbolic links Junio C Hamano
2005-12-02 9:16 ` [PATCH] git-merge documentation: conflicting merge leaves higher stages in index Junio C Hamano
2005-11-30 6:09 ` git-name-rev off-by-one bug linux
2005-11-30 6:39 ` Junio C Hamano
2005-11-30 13:10 ` More merge questions linux
2005-11-30 18:37 ` Daniel Barkalow
2005-11-30 20:23 ` Junio C Hamano
2005-12-02 9:19 ` More merge questions (why doesn't this work?) linux
2005-12-02 10:12 ` Junio C Hamano
2005-12-02 13:09 ` Sven Verdoolaege
2005-12-02 20:32 ` Junio C Hamano
2005-12-05 15:01 ` Sven Verdoolaege
2005-12-02 11:37 ` linux [this message]
2005-12-02 20:31 ` Junio C Hamano
2005-12-02 21:32 ` linux
2005-12-02 22:00 ` Junio C Hamano
2005-12-02 22:12 ` Linus Torvalds
2005-12-02 23:14 ` linux
2005-12-02 21:56 ` More merge questions linux
2005-11-30 16:12 ` git-name-rev off-by-one bug Linus Torvalds
2005-11-30 7:18 ` Junio C Hamano
2005-11-30 9:05 ` Junio C Hamano
2005-11-30 9:42 ` Junio C Hamano
2005-11-30 3:15 ` linux
2005-11-30 18:11 ` Daniel Barkalow
2005-11-30 17:46 ` Daniel Barkalow
2005-11-30 20:05 ` Junio C Hamano
2005-11-30 21:06 ` Daniel Barkalow
2005-11-30 22:00 ` Junio C Hamano
2005-11-30 23:12 ` Daniel Barkalow
2005-12-01 7:46 ` Junio C Hamano
2005-12-01 10:14 ` Junio C Hamano
2005-12-01 21:50 ` Petr Baudis
2005-12-01 21:53 ` Randal L. Schwartz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20051202113713.11618.qmail@science.horizon.com \
--to=linux@horizon.com \
--cc=git@vger.kernel.org \
--cc=junkio@cox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).