提交 7cb038a6 编写于 作者: J Junio C Hamano

Merge branch 'fixo/1.0'

...@@ -25,7 +25,9 @@ information. ...@@ -25,7 +25,9 @@ information.
OPTIONS OPTIONS
------- -------
-a|--all:: -a|--all::
Update all paths in the index file. Update all paths in the index file. This flag notices
files that have been modified and deleted, but new files
you have not told about git are not affected.
-c or -C <commit>:: -c or -C <commit>::
Take existing commit object, and reuse the log message Take existing commit object, and reuse the log message
......
...@@ -145,6 +145,32 @@ brings your index file and the working tree back to that state, ...@@ -145,6 +145,32 @@ brings your index file and the working tree back to that state,
and resets the tip of the branch to that commit. and resets the tip of the branch to that commit.
------------ ------------
Interrupted workflow::
+
You can get interrupted by an ungent fix request while you are
still in the middle of a large change. The files in your
working tree are not in any shape to be committed yet, but you
need to get to the other branch for a quick bugfix.
+
------------
$ git checkout feature ;# you were working in "feature" branch and
$ work work work ;# got interrupted
$ git commit -a -m 'snapshot WIP' <1>
$ git checkout master
$ fix fix fix
$ git commit ;# commit with real log
$ git checkout feature
$ git reset --soft HEAD^ ;# go back to WIP state <2>
$ git reset <3>
<1> This commit will get blown away so a throw-away log message is OK.
<2> This removes the 'WIP' commit from the commit history, and makes
your working tree in the state just before you made that snapshot.
<3> After <2>, the index file still has all the WIP changes you
committed in <1>. This sets it to the last commit you were
basing the WIP changes on.
------------
Author Author
------ ------
Written by Junio C Hamano <junkio@cox.net> and Linus Torvalds <torvalds@osdl.org> Written by Junio C Hamano <junkio@cox.net> and Linus Torvalds <torvalds@osdl.org>
...@@ -156,4 +182,3 @@ Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>. ...@@ -156,4 +182,3 @@ Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
GIT GIT
--- ---
Part of the gitlink:git[7] suite Part of the gitlink:git[7] suite
...@@ -111,6 +111,17 @@ branch:: ...@@ -111,6 +111,17 @@ branch::
a particular revision, which is called the branch head. The a particular revision, which is called the branch head. The
branch heads are stored in `$GIT_DIR/refs/heads/`. branch heads are stored in `$GIT_DIR/refs/heads/`.
master::
The default branch. Whenever you create a git repository, a branch
named "master" is created, and becomes the active branch. In most
cases, this contains the local development.
origin::
The default upstream branch. Most projects have one upstream
project which they track, and by default 'origin' is used for
that purpose. New updates from upstream will be fetched into
this branch; you should never commit to it yourself.
ref:: ref::
A 40-byte hex representation of a SHA1 pointing to a particular A 40-byte hex representation of a SHA1 pointing to a particular
object. These may be stored in `$GIT_DIR/refs/`. object. These may be stored in `$GIT_DIR/refs/`.
......
...@@ -134,9 +134,9 @@ is often useful. ...@@ -134,9 +134,9 @@ is often useful.
+ +
Some short-cut notations are also supported. Some short-cut notations are also supported.
+ +
* For backward compatibility, `tag` is almost ignored; * `tag <tag>` means the same as `refs/tags/<tag>:refs/tags/<tag>`;
it just makes the following parameter <tag> to mean a used with pull or fetch, it requests fetching everything up to
refspec `refs/tags/<tag>:refs/tags/<tag>`. the given tag.
* A parameter <ref> without a colon is equivalent to * A parameter <ref> without a colon is equivalent to
<ref>: when pulling/fetching, and <ref>`:`<ref> when <ref>: when pulling/fetching, and <ref>`:`<ref> when
pushing. That is, do not store it locally if pushing. That is, do not store it locally if
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
* passed around in one int (high 16-bit for merge and low 16-bit * passed around in one int (high 16-bit for merge and low 16-bit
* for break). * for break).
*/ */
#define MAX_SCORE 60000 #define MAX_SCORE 60000.0
#define DEFAULT_RENAME_SCORE 30000 /* rename/copy similarity minimum (50%) */ #define DEFAULT_RENAME_SCORE 30000 /* rename/copy similarity minimum (50%) */
#define DEFAULT_BREAK_SCORE 30000 /* minimum for break to happen (50%)*/ #define DEFAULT_BREAK_SCORE 30000 /* minimum for break to happen (50%)*/
#define DEFAULT_MERGE_SCORE 48000 /* maximum for break-merge to happen (80%)*/ #define DEFAULT_MERGE_SCORE 48000 /* maximum for break-merge to happen (80%)*/
......
...@@ -93,10 +93,11 @@ static int name_ref(const char *path, const unsigned char *sha1) ...@@ -93,10 +93,11 @@ static int name_ref(const char *path, const unsigned char *sha1)
} }
if (o && o->type == commit_type) { if (o && o->type == commit_type) {
struct commit *commit = (struct commit *)o; struct commit *commit = (struct commit *)o;
const char *p;
while ((p = strchr(path, '/'))) if (!strncmp(path, "refs/heads/", 11))
path = p+1; path = path + 11;
else if (!strncmp(path, "refs/", 5))
path = path + 5;
name_rev(commit, strdup(path), 0, 0, deref); name_rev(commit, strdup(path), 0, 0, deref);
} }
......
...@@ -492,7 +492,7 @@ static void append_one_rev(const char *av) ...@@ -492,7 +492,7 @@ static void append_one_rev(const char *av)
append_ref(av, revkey); append_ref(av, revkey);
return; return;
} }
if (strchr(av, '*') || strchr(av, '?')) { if (strchr(av, '*') || strchr(av, '?') || strchr(av, '[')) {
/* glob style match */ /* glob style match */
int saved_matches = ref_name_cnt; int saved_matches = ref_name_cnt;
match_ref_pattern = av; match_ref_pattern = av;
......
...@@ -46,14 +46,14 @@ H=$(doit 8 H $A $F) ...@@ -46,14 +46,14 @@ H=$(doit 8 H $A $F)
test_expect_success 'compute merge-base (single)' \ test_expect_success 'compute merge-base (single)' \
'MB=$(git-merge-base G H) && 'MB=$(git-merge-base G H) &&
expr "$(git-name-rev "$MB")" : "[0-9a-f]* B"' expr "$(git-name-rev "$MB")" : "[0-9a-f]* tags/B"'
test_expect_success 'compute merge-base (all)' \ test_expect_success 'compute merge-base (all)' \
'MB=$(git-merge-base --all G H) && 'MB=$(git-merge-base --all G H) &&
expr "$(git-name-rev "$MB")" : "[0-9a-f]* B"' expr "$(git-name-rev "$MB")" : "[0-9a-f]* tags/B"'
test_expect_success 'compute merge-base with show-branch' \ test_expect_success 'compute merge-base with show-branch' \
'MB=$(git-show-branch --merge-base G H) && 'MB=$(git-show-branch --merge-base G H) &&
expr "$(git-name-rev "$MB")" : "[0-9a-f]* B"' expr "$(git-name-rev "$MB")" : "[0-9a-f]* tags/B"'
test_done test_done
...@@ -534,10 +534,17 @@ int main(int argc, const char **argv) ...@@ -534,10 +534,17 @@ int main(int argc, const char **argv)
struct strbuf buf; struct strbuf buf;
strbuf_init(&buf); strbuf_init(&buf);
while (1) { while (1) {
char *path_name;
read_line(&buf, stdin, line_termination); read_line(&buf, stdin, line_termination);
if (buf.eof) if (buf.eof)
break; break;
update_one(buf.buf, prefix, prefix_length); if (line_termination && buf.buf[0] == '"')
path_name = unquote_c_style(buf.buf, NULL);
else
path_name = buf.buf;
update_one(path_name, prefix, prefix_length);
if (path_name != buf.buf)
free(path_name);
} }
} }
if (active_cache_changed) { if (active_cache_changed) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册