summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--Documentation/git-commit.txt4
-rw-r--r--Documentation/git-reset.txt27
-rw-r--r--Documentation/pull-fetch-param.txt6
-rw-r--r--describe.c5
-rw-r--r--name-rev.c7
-rw-r--r--show-branch.c2
-rwxr-xr-xt/t6010-merge-base.sh6
-rw-r--r--update-index.c9
9 files changed, 52 insertions, 15 deletions
diff --git a/.gitignore b/.gitignore
index 1a9090b..5382e74 100644
--- a/.gitignore
+++ b/.gitignore
@@ -28,6 +28,7 @@ git-diff-files
git-diff-index
git-diff-stages
git-diff-tree
+git-describe
git-fetch
git-fetch-pack
git-findtags
diff --git a/Documentation/git-commit.txt b/Documentation/git-commit.txt
index e0ff74f..e35984d 100644
--- a/Documentation/git-commit.txt
+++ b/Documentation/git-commit.txt
@@ -25,7 +25,9 @@ information.
OPTIONS
-------
-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>::
Take existing commit object, and reuse the log message
diff --git a/Documentation/git-reset.txt b/Documentation/git-reset.txt
index c6a269b..315683a 100644
--- a/Documentation/git-reset.txt
+++ b/Documentation/git-reset.txt
@@ -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.
------------
+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
------
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>.
GIT
---
Part of the gitlink:git[7] suite
-
diff --git a/Documentation/pull-fetch-param.txt b/Documentation/pull-fetch-param.txt
index b5b9792..4524fee 100644
--- a/Documentation/pull-fetch-param.txt
+++ b/Documentation/pull-fetch-param.txt
@@ -134,9 +134,9 @@ is often useful.
+
Some short-cut notations are also supported.
+
-* For backward compatibility, `tag` is almost ignored;
- it just makes the following parameter <tag> to mean a
- refspec `refs/tags/<tag>:refs/tags/<tag>`.
+* `tag <tag>` means the same as `refs/tags/<tag>:refs/tags/<tag>`;
+ used with pull or fetch, it requests fetching everything up to
+ the given tag.
* A parameter <ref> without a colon is equivalent to
<ref>: when pulling/fetching, and <ref>`:`<ref> when
pushing. That is, do not store it locally if
diff --git a/describe.c b/describe.c
index a0180f5..5548a16 100644
--- a/describe.c
+++ b/describe.c
@@ -124,10 +124,11 @@ static void describe(struct commit *cmit)
if (n) {
printf("%s-g%s\n", n->path,
find_unique_abbrev(cmit->object.sha1, abbrev));
- break;
+ clear_commit_marks(cmit, SEEN);
+ return;
}
}
- clear_commit_marks(cmit, SEEN);
+ die("cannot describe '%s'", sha1_to_hex(cmit->object.sha1));
}
int main(int argc, char **argv)
diff --git a/name-rev.c b/name-rev.c
index 65333d4..bbadb91 100644
--- a/name-rev.c
+++ b/name-rev.c
@@ -93,10 +93,11 @@ static int name_ref(const char *path, const unsigned char *sha1)
}
if (o && o->type == commit_type) {
struct commit *commit = (struct commit *)o;
- const char *p;
- while ((p = strchr(path, '/')))
- path = p+1;
+ if (!strncmp(path, "refs/heads/", 11))
+ path = path + 11;
+ else if (!strncmp(path, "refs/", 5))
+ path = path + 5;
name_rev(commit, strdup(path), 0, 0, deref);
}
diff --git a/show-branch.c b/show-branch.c
index 15b1968..1935c44 100644
--- a/show-branch.c
+++ b/show-branch.c
@@ -492,7 +492,7 @@ static void append_one_rev(const char *av)
append_ref(av, revkey);
return;
}
- if (strchr(av, '*') || strchr(av, '?')) {
+ if (strchr(av, '*') || strchr(av, '?') || strchr(av, '[')) {
/* glob style match */
int saved_matches = ref_name_cnt;
match_ref_pattern = av;
diff --git a/t/t6010-merge-base.sh b/t/t6010-merge-base.sh
index c3a9680..1dce123 100755
--- a/t/t6010-merge-base.sh
+++ b/t/t6010-merge-base.sh
@@ -46,14 +46,14 @@ H=$(doit 8 H $A $F)
test_expect_success 'compute merge-base (single)' \
'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)' \
'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' \
'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
diff --git a/update-index.c b/update-index.c
index be87b99..a84a04f 100644
--- a/update-index.c
+++ b/update-index.c
@@ -534,10 +534,17 @@ int main(int argc, const char **argv)
struct strbuf buf;
strbuf_init(&buf);
while (1) {
+ char *path_name;
read_line(&buf, stdin, line_termination);
if (buf.eof)
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) {