Merge branch 'maint'

* maint:
  Start 1.6.0.2 maintenance cycle
  tests: use "git xyzzy" form (t7200 - t9001)
  tests: use "git xyzzy" form (t7000 - t7199)
  Fix passwd(5) ref and reflect that commit doens't use commit-tree
  improve handling of sideband message display
  tests: use "git xyzzy" form (t3600 - t6999)
  tests: use "git xyzzy" form (t0000 - t3599)
  checkout: fix message when leaving detached HEAD
  clone: fix creation of explicitly named target directory
  'git foo' program identifies itself without dash in die() messages
  setup_git_directory(): fix move to worktree toplevel directory
  update-index: fix worktree setup
  Start conforming code to "git subcmd" style
  read-tree: setup worktree if merge is required
  grep: fix worktree setup
  diff*: fix worktree setup

Conflicts:
	RelNotes
	t/t3900-i18n-commit.sh
	t/t7003-filter-branch.sh
This commit is contained in:
Junio C Hamano 2008-09-03 16:08:23 -07:00
commit 9b8ae93ad9
110 changed files with 794 additions and 620 deletions

View File

@ -0,0 +1,50 @@
GIT v1.6.0.2 Release Notes
==========================
Fixes since v1.6.0.1
--------------------
* Installation on platforms that needs .exe suffix to git-* programs were
broken in 1.6.0.1.
* Installation on filesystems without symbolic links support did nto
work well.
* In-tree documentations and test scripts now use "git foo" form to set a
better example, instead of the "git-foo" form (which is an acceptable
form if you have "PATH=$(git --exec-path):$PATH" in your script)
* Many commands did not use the correct working tree location when used
with GIT_WORK_TREE environment settings.
* "git apply --unidiff-zero" incorrectly applied a -U0 patch that inserts
a new line before the second line.
* "git clone $there $here/" with extra trailing slashes after explicit
local directory name $here did not work as expected.
* "git diff --dirstat -M" did not add changes in subdirectories up
correctly for renamed paths.
* "git for-each-ref refs/heads/" did not work as expected.
* "git log --grep=pattern -i" did not ignore case.
* "git log --pretty="%ad" --date=short" did not use short format when
showing the timestamp.
* Build procedure for "git shell" that used stub versions of some
functions and globals was not understood by linkers on some platforms.
* "git verify-pack -v" did not work correctly when given more than one
packfile.
Also contains many documentation updates.
--
exec >/var/tmp/1
O=v1.6.0.1-49-g6a42cfe
echo O=$(git describe maint)
git shortlog --no-merges $O..maint

View File

@ -79,9 +79,9 @@ Diagnostics
You don't exist. Go away!:: You don't exist. Go away!::
The passwd(5) gecos field couldn't be read The passwd(5) gecos field couldn't be read
Your parents must have hated you!:: Your parents must have hated you!::
The password(5) gecos field is longer than a giant static buffer. The passwd(5) gecos field is longer than a giant static buffer.
Your sysadmin must hate you!:: Your sysadmin must hate you!::
The password(5) name field is longer than a giant static buffer. The passwd(5) name field is longer than a giant static buffer.
Discussion Discussion
---------- ----------

View File

@ -20,7 +20,7 @@ OPTIONS
Cause the logical variables to be listed. In addition, all the Cause the logical variables to be listed. In addition, all the
variables of the git configuration file .git/config are listed variables of the git configuration file .git/config are listed
as well. (However, the configuration variables listing functionality as well. (However, the configuration variables listing functionality
is deprecated in favor of 'git-config -l'.) is deprecated in favor of 'git config -l'.)
EXAMPLE EXAMPLE
-------- --------
@ -41,9 +41,9 @@ Diagnostics
You don't exist. Go away!:: You don't exist. Go away!::
The passwd(5) gecos field couldn't be read The passwd(5) gecos field couldn't be read
Your parents must have hated you!:: Your parents must have hated you!::
The password(5) gecos field is longer than a giant static buffer. The passwd(5) gecos field is longer than a giant static buffer.
Your sysadmin must hate you!:: Your sysadmin must hate you!::
The password(5) name field is longer than a giant static buffer. The passwd(5) name field is longer than a giant static buffer.
SEE ALSO SEE ALSO
-------- --------

View File

@ -21,7 +21,7 @@ project find it more convenient to use legacy encodings, git
does not forbid it. However, there are a few things to keep in does not forbid it. However, there are a few things to keep in
mind. mind.
. 'git-commit-tree' (hence, 'git-commit' which uses it) issues . 'git-commit' and 'git-commit-tree' issues
a warning if the commit log message given to it does not look a warning if the commit log message given to it does not look
like a valid UTF-8 string, unless you explicitly say your like a valid UTF-8 string, unless you explicitly say your
project uses a legacy encoding. The way to say this is to project uses a legacy encoding. The way to say this is to

View File

@ -274,7 +274,7 @@ static void say_patch_name(FILE *output, const char *pre,
static void read_patch_file(struct strbuf *sb, int fd) static void read_patch_file(struct strbuf *sb, int fd)
{ {
if (strbuf_read(sb, fd, 0) < 0) if (strbuf_read(sb, fd, 0) < 0)
die("git-apply: read returned %s", strerror(errno)); die("git apply: read returned %s", strerror(errno));
/* /*
* Make sure that we have some slop in the buffer * Make sure that we have some slop in the buffer
@ -506,17 +506,17 @@ static char *gitdiff_verify_name(const char *line, int isnull, char *orig_name,
name = orig_name; name = orig_name;
len = strlen(name); len = strlen(name);
if (isnull) if (isnull)
die("git-apply: bad git-diff - expected /dev/null, got %s on line %d", name, linenr); die("git apply: bad git-diff - expected /dev/null, got %s on line %d", name, linenr);
another = find_name(line, NULL, p_value, TERM_TAB); another = find_name(line, NULL, p_value, TERM_TAB);
if (!another || memcmp(another, name, len)) if (!another || memcmp(another, name, len))
die("git-apply: bad git-diff - inconsistent %s filename on line %d", oldnew, linenr); die("git apply: bad git-diff - inconsistent %s filename on line %d", oldnew, linenr);
free(another); free(another);
return orig_name; return orig_name;
} }
else { else {
/* expect "/dev/null" */ /* expect "/dev/null" */
if (memcmp("/dev/null", line, 9) || line[9] != '\n') if (memcmp("/dev/null", line, 9) || line[9] != '\n')
die("git-apply: bad git-diff - expected /dev/null on line %d", linenr); die("git apply: bad git-diff - expected /dev/null on line %d", linenr);
return NULL; return NULL;
} }
} }

View File

@ -47,18 +47,18 @@ static int run_remote_archiver(const char *remote, int argc,
len = packet_read_line(fd[0], buf, sizeof(buf)); len = packet_read_line(fd[0], buf, sizeof(buf));
if (!len) if (!len)
die("git-archive: expected ACK/NAK, got EOF"); die("git archive: expected ACK/NAK, got EOF");
if (buf[len-1] == '\n') if (buf[len-1] == '\n')
buf[--len] = 0; buf[--len] = 0;
if (strcmp(buf, "ACK")) { if (strcmp(buf, "ACK")) {
if (len > 5 && !prefixcmp(buf, "NACK ")) if (len > 5 && !prefixcmp(buf, "NACK "))
die("git-archive: NACK %s", buf + 5); die("git archive: NACK %s", buf + 5);
die("git-archive: protocol error"); die("git archive: protocol error");
} }
len = packet_read_line(fd[0], buf, sizeof(buf)); len = packet_read_line(fd[0], buf, sizeof(buf));
if (len) if (len)
die("git-archive: expected a flush"); die("git archive: expected a flush");
/* Now, start reading from fd[0] and spit it out to stdout */ /* Now, start reading from fd[0] and spit it out to stdout */
rv = recv_sideband("archive", fd[0], 1, 2); rv = recv_sideband("archive", fd[0], 1, 2);

View File

@ -1787,7 +1787,7 @@ static int prepare_lines(struct scoreboard *sb)
/* /*
* Add phony grafts for use with -S; this is primarily to * Add phony grafts for use with -S; this is primarily to
* support git-cvsserver that wants to give a linear history * support git's cvsserver that wants to give a linear history
* to its clients. * to its clients.
*/ */
static int read_ancestry(const char *graft_file) static int read_ancestry(const char *graft_file)

View File

@ -6,10 +6,10 @@
* Basic handler for bundle files to connect repositories via sneakernet. * Basic handler for bundle files to connect repositories via sneakernet.
* Invocation must include action. * Invocation must include action.
* This function can create a bundle or provide information on an existing * This function can create a bundle or provide information on an existing
* bundle supporting git-fetch, git-pull, and git-ls-remote * bundle supporting "fetch", "pull", and "ls-remote".
*/ */
static const char *bundle_usage="git-bundle (create <bundle> <git-rev-list args> | verify <bundle> | list-heads <bundle> [refname]... | unbundle <bundle> [refname]... )"; static const char *bundle_usage="git bundle (create <bundle> <git rev-list args> | verify <bundle> | list-heads <bundle> [refname]... | unbundle <bundle> [refname]... )";
int cmd_bundle(int argc, const char **argv, const char *prefix) int cmd_bundle(int argc, const char **argv, const char *prefix)
{ {

View File

@ -137,11 +137,11 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name)
break; break;
default: default:
die("git-cat-file: unknown option: %s\n", exp_type); die("git cat-file: unknown option: %s\n", exp_type);
} }
if (!buf) if (!buf)
die("git-cat-file %s: bad file", obj_name); die("git cat-file %s: bad file", obj_name);
write_or_die(1, buf, size); write_or_die(1, buf, size);
return 0; return 0;

View File

@ -9,6 +9,6 @@
int cmd_check_ref_format(int argc, const char **argv, const char *prefix) int cmd_check_ref_format(int argc, const char **argv, const char *prefix)
{ {
if (argc != 2) if (argc != 2)
usage("git-check-ref-format refname"); usage("git check-ref-format refname");
return !!check_ref_format(argv[1]); return !!check_ref_format(argv[1]);
} }

View File

@ -258,9 +258,9 @@ int cmd_checkout_index(int argc, const char **argv, const char *prefix)
const char *p; const char *p;
if (all) if (all)
die("git-checkout-index: don't mix '--all' and explicit filenames"); die("git checkout-index: don't mix '--all' and explicit filenames");
if (read_from_stdin) if (read_from_stdin)
die("git-checkout-index: don't mix '--stdin' and explicit filenames"); die("git checkout-index: don't mix '--stdin' and explicit filenames");
p = prefix_path(prefix, prefix_length, arg); p = prefix_path(prefix, prefix_length, arg);
checkout_file(p, prefix_length); checkout_file(p, prefix_length);
if (p < arg || p > arg + strlen(arg)) if (p < arg || p > arg + strlen(arg))
@ -271,7 +271,7 @@ int cmd_checkout_index(int argc, const char **argv, const char *prefix)
struct strbuf buf, nbuf; struct strbuf buf, nbuf;
if (all) if (all)
die("git-checkout-index: don't mix '--all' and '--stdin'"); die("git checkout-index: don't mix '--all' and '--stdin'");
strbuf_init(&buf, 0); strbuf_init(&buf, 0);
strbuf_init(&nbuf, 0); strbuf_init(&nbuf, 0);

View File

@ -386,13 +386,11 @@ static int switch_branches(struct checkout_opts *opts, struct branch_info *new)
} }
/* /*
* If the new thing isn't a branch and isn't HEAD and we're * If we were on a detached HEAD, but we are now moving to
* not starting a new branch, and we want messages, and we * a new commit, we want to mention the old commit once more
* weren't on a branch, and we're moving to a new commit, * to remind the user that it might be lost.
* describe the old commit.
*/ */
if (!new->path && strcmp(new->name, "HEAD") && !opts->new_branch && if (!opts->quiet && !old.path && new->commit != old.commit)
!opts->quiet && !old.path && new->commit != old.commit)
describe_detached_head("Previous HEAD position was", old.commit); describe_detached_head("Previous HEAD position was", old.commit);
if (!old.commit) { if (!old.commit) {

View File

@ -147,6 +147,15 @@ static int is_directory(const char *path)
return !stat(path, &buf) && S_ISDIR(buf.st_mode); return !stat(path, &buf) && S_ISDIR(buf.st_mode);
} }
static void strip_trailing_slashes(char *dir)
{
char *end = dir + strlen(dir);
while (dir < end - 1 && is_dir_sep(end[-1]))
end--;
*end = '\0';
}
static void setup_reference(const char *repo) static void setup_reference(const char *repo)
{ {
const char *ref_git; const char *ref_git;
@ -397,6 +406,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
dir = xstrdup(argv[1]); dir = xstrdup(argv[1]);
else else
dir = guess_dir_name(repo_name, is_bundle, option_bare); dir = guess_dir_name(repo_name, is_bundle, option_bare);
strip_trailing_slashes(dir);
if (!stat(dir, &buf)) if (!stat(dir, &buf))
die("destination directory '%s' already exists.", dir); die("destination directory '%s' already exists.", dir);
@ -422,10 +432,11 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
if (!option_bare) { if (!option_bare) {
junk_work_tree = work_tree; junk_work_tree = work_tree;
if (safe_create_leading_directories_const(work_tree) < 0) if (safe_create_leading_directories_const(work_tree) < 0)
die("could not create leading directories of '%s'", die("could not create leading directories of '%s': %s",
work_tree); work_tree, strerror(errno));
if (mkdir(work_tree, 0755)) if (mkdir(work_tree, 0755))
die("could not create work tree dir '%s'.", work_tree); die("could not create work tree dir '%s': %s.",
work_tree, strerror(errno));
set_git_work_tree(work_tree); set_git_work_tree(work_tree);
} }
junk_git_dir = git_dir; junk_git_dir = git_dir;

View File

@ -121,7 +121,7 @@ int cmd_commit_tree(int argc, const char **argv, const char *prefix)
} }
if (strbuf_read(&buffer, 0, 0) < 0) if (strbuf_read(&buffer, 0, 0) < 0)
die("git-commit-tree: read returned %s", strerror(errno)); die("git commit-tree: read returned %s", strerror(errno));
if (!commit_tree(buffer.buf, tree_sha1, parents, commit_sha1)) { if (!commit_tree(buffer.buf, tree_sha1, parents, commit_sha1)) {
printf("%s\n", sha1_to_hex(commit_sha1)); printf("%s\n", sha1_to_hex(commit_sha1));

View File

@ -39,6 +39,8 @@ int cmd_diff_index(int argc, const char **argv, const char *prefix)
if (rev.pending.nr != 1 || if (rev.pending.nr != 1 ||
rev.max_count != -1 || rev.min_age != -1 || rev.max_age != -1) rev.max_count != -1 || rev.min_age != -1 || rev.max_age != -1)
usage(diff_cache_usage); usage(diff_cache_usage);
if (!cached)
setup_work_tree();
if (read_cache() < 0) { if (read_cache() < 0) {
perror("read_cache"); perror("read_cache");
return -1; return -1;

View File

@ -122,6 +122,8 @@ static int builtin_diff_index(struct rev_info *revs,
usage(builtin_diff_usage); usage(builtin_diff_usage);
argv++; argc--; argv++; argc--;
} }
if (!cached)
setup_work_tree();
/* /*
* Make sure there is one revision (i.e. pending object), * Make sure there is one revision (i.e. pending object),
* and there is no revision filtering parameters. * and there is no revision filtering parameters.
@ -225,6 +227,7 @@ static int builtin_diff_files(struct rev_info *revs, int argc, const char **argv
(revs->diffopt.output_format & DIFF_FORMAT_PATCH)) (revs->diffopt.output_format & DIFF_FORMAT_PATCH))
revs->combine_merges = revs->dense_combined_merges = 1; revs->combine_merges = revs->dense_combined_merges = 1;
setup_work_tree();
if (read_cache() < 0) { if (read_cache() < 0) {
perror("read_cache"); perror("read_cache");
return -1; return -1;

View File

@ -609,7 +609,7 @@ static struct ref *do_fetch_pack(int fd[2],
fprintf(stderr, "warning: no common commits\n"); fprintf(stderr, "warning: no common commits\n");
if (get_pack(fd, pack_lockfile)) if (get_pack(fd, pack_lockfile))
die("git-fetch-pack: fetch failed."); die("git fetch-pack: fetch failed.");
all_done: all_done:
return ref; return ref;

View File

@ -774,7 +774,7 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
/* Make sure we do not get outside of paths */ /* Make sure we do not get outside of paths */
for (i = 0; paths[i]; i++) for (i = 0; paths[i]; i++)
if (strncmp(prefix, paths[i], opt.prefix_length)) if (strncmp(prefix, paths[i], opt.prefix_length))
die("git-grep: cannot generate relative filenames containing '..'"); die("git grep: cannot generate relative filenames containing '..'");
} }
} }
else if (prefix) { else if (prefix) {
@ -783,8 +783,11 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
paths[1] = NULL; paths[1] = NULL;
} }
if (!list.nr) if (!list.nr) {
if (!cached)
setup_work_tree();
return !grep_cache(&opt, paths, cached); return !grep_cache(&opt, paths, cached);
}
if (cached) if (cached)
die("both --cached and trees are given."); die("both --cached and trees are given.");

View File

@ -78,7 +78,7 @@ static void show_dir_entry(const char *tag, struct dir_entry *ent)
int offset = prefix_offset; int offset = prefix_offset;
if (len >= ent->len) if (len >= ent->len)
die("git-ls-files: internal error - directory entry not superset of prefix"); die("git ls-files: internal error - directory entry not superset of prefix");
if (pathspec && !pathspec_match(pathspec, ps_matched, ent->name, len)) if (pathspec && !pathspec_match(pathspec, ps_matched, ent->name, len))
return; return;
@ -183,7 +183,7 @@ static void show_ce_entry(const char *tag, struct cache_entry *ce)
int offset = prefix_offset; int offset = prefix_offset;
if (len >= ce_namelen(ce)) if (len >= ce_namelen(ce))
die("git-ls-files: internal error - cache entry not superset of prefix"); die("git ls-files: internal error - cache entry not superset of prefix");
if (pathspec && !pathspec_match(pathspec, ps_matched, ce->name, len)) if (pathspec && !pathspec_match(pathspec, ps_matched, ce->name, len))
return; return;
@ -319,7 +319,7 @@ static const char *verify_pathspec(const char *prefix)
} }
if (prefix_offset > max || memcmp(prev, prefix, prefix_offset)) if (prefix_offset > max || memcmp(prev, prefix, prefix_offset))
die("git-ls-files: cannot generate relative filenames containing '..'"); die("git ls-files: cannot generate relative filenames containing '..'");
prefix_len = max; prefix_len = max;
return max ? xmemdupz(prev, max) : NULL; return max ? xmemdupz(prev, max) : NULL;

View File

@ -194,6 +194,8 @@ int cmd_read_tree(int argc, const char **argv, const char *unused_prefix)
usage(read_tree_usage); usage(read_tree_usage);
if ((opts.dir && !opts.update)) if ((opts.dir && !opts.update))
die("--exclude-per-directory is meaningless unless -u"); die("--exclude-per-directory is meaningless unless -u");
if (opts.merge && !opts.index_only)
setup_work_tree();
if (opts.merge) { if (opts.merge) {
if (stage < 2) if (stage < 2)

View File

@ -221,7 +221,7 @@ int cmd_rm(int argc, const char **argv, const char *prefix)
printf("rm '%s'\n", path); printf("rm '%s'\n", path);
if (remove_file_from_cache(path)) if (remove_file_from_cache(path))
die("git-rm: unable to remove %s", path); die("git rm: unable to remove %s", path);
} }
if (show_only) if (show_only)
@ -244,7 +244,7 @@ int cmd_rm(int argc, const char **argv, const char *prefix)
continue; continue;
} }
if (!removed) if (!removed)
die("git-rm: %s: %s", path, strerror(errno)); die("git rm: %s: %s", path, strerror(errno));
} }
} }

View File

@ -62,7 +62,7 @@ match:
* ref points at a nonexistent object. * ref points at a nonexistent object.
*/ */
if (!has_sha1_file(sha1)) if (!has_sha1_file(sha1))
die("git-show-ref: bad ref %s (%s)", refname, die("git show-ref: bad ref %s (%s)", refname,
sha1_to_hex(sha1)); sha1_to_hex(sha1));
if (quiet) if (quiet)
@ -82,12 +82,12 @@ match:
else { else {
obj = parse_object(sha1); obj = parse_object(sha1);
if (!obj) if (!obj)
die("git-show-ref: bad ref %s (%s)", refname, die("git show-ref: bad ref %s (%s)", refname,
sha1_to_hex(sha1)); sha1_to_hex(sha1));
if (obj->type == OBJ_TAG) { if (obj->type == OBJ_TAG) {
obj = deref_tag(obj, refname, 0); obj = deref_tag(obj, refname, 0);
if (!obj) if (!obj)
die("git-show-ref: bad tag at ref %s (%s)", refname, die("git show-ref: bad tag at ref %s (%s)", refname,
sha1_to_hex(sha1)); sha1_to_hex(sha1));
hex = find_unique_abbrev(obj->sha1, abbrev); hex = find_unique_abbrev(obj->sha1, abbrev);
printf("%s %s^{}\n", hex, refname); printf("%s %s^{}\n", hex, refname);

View File

@ -76,7 +76,7 @@ int cmd_get_tar_commit_id(int argc, const char **argv, const char *prefix)
n = read_in_full(0, buffer, HEADERSIZE); n = read_in_full(0, buffer, HEADERSIZE);
if (n < HEADERSIZE) if (n < HEADERSIZE)
die("git-get-tar-commit-id: read error"); die("git get-tar-commit-id: read error");
if (header->typeflag[0] != 'g') if (header->typeflag[0] != 'g')
return 1; return 1;
if (memcmp(content, "52 comment=", 11)) if (memcmp(content, "52 comment=", 11))
@ -84,7 +84,7 @@ int cmd_get_tar_commit_id(int argc, const char **argv, const char *prefix)
n = write_in_full(1, content + 11, 41); n = write_in_full(1, content + 11, 41);
if (n < 41) if (n < 41)
die("git-get-tar-commit-id: write error"); die("git get-tar-commit-id: write error");
return 0; return 0;
} }

View File

@ -265,7 +265,7 @@ static void chmod_path(int flip, const char *path)
report("chmod %cx '%s'", flip, path); report("chmod %cx '%s'", flip, path);
return; return;
fail: fail:
die("git-update-index: cannot chmod %cx '%s'", flip, path); die("git update-index: cannot chmod %cx '%s'", flip, path);
} }
static void update_one(const char *path, const char *prefix, int prefix_length) static void update_one(const char *path, const char *prefix, int prefix_length)
@ -283,7 +283,7 @@ static void update_one(const char *path, const char *prefix, int prefix_length)
if (force_remove) { if (force_remove) {
if (remove_file_from_cache(p)) if (remove_file_from_cache(p))
die("git-update-index: unable to remove %s", path); die("git update-index: unable to remove %s", path);
report("remove '%s'", path); report("remove '%s'", path);
goto free_return; goto free_return;
} }
@ -354,7 +354,7 @@ static void read_index_info(int line_termination)
if (line_termination && path_name[0] == '"') { if (line_termination && path_name[0] == '"') {
strbuf_reset(&uq); strbuf_reset(&uq);
if (unquote_c_style(&uq, path_name, NULL)) { if (unquote_c_style(&uq, path_name, NULL)) {
die("git-update-index: bad quoting of path name"); die("git update-index: bad quoting of path name");
} }
path_name = uq.buf; path_name = uq.buf;
} }
@ -367,7 +367,7 @@ static void read_index_info(int line_termination)
if (!mode) { if (!mode) {
/* mode == 0 means there is no such path -- remove */ /* mode == 0 means there is no such path -- remove */
if (remove_file_from_cache(path_name)) if (remove_file_from_cache(path_name))
die("git-update-index: unable to remove %s", die("git update-index: unable to remove %s",
ptr); ptr);
} }
else { else {
@ -377,7 +377,7 @@ static void read_index_info(int line_termination)
*/ */
ptr[-42] = ptr[-1] = 0; ptr[-42] = ptr[-1] = 0;
if (add_cacheinfo(mode, sha1, path_name, stage)) if (add_cacheinfo(mode, sha1, path_name, stage))
die("git-update-index: unable to update %s", die("git update-index: unable to update %s",
path_name); path_name);
} }
continue; continue;
@ -617,10 +617,12 @@ int cmd_update_index(int argc, const char **argv, const char *prefix)
continue; continue;
} }
if (!strcmp(path, "--refresh")) { if (!strcmp(path, "--refresh")) {
setup_work_tree();
has_errors |= refresh_cache(refresh_flags); has_errors |= refresh_cache(refresh_flags);
continue; continue;
} }
if (!strcmp(path, "--really-refresh")) { if (!strcmp(path, "--really-refresh")) {
setup_work_tree();
has_errors |= refresh_cache(REFRESH_REALLY | refresh_flags); has_errors |= refresh_cache(REFRESH_REALLY | refresh_flags);
continue; continue;
} }
@ -629,12 +631,12 @@ int cmd_update_index(int argc, const char **argv, const char *prefix)
unsigned int mode; unsigned int mode;
if (i+3 >= argc) if (i+3 >= argc)
die("git-update-index: --cacheinfo <mode> <sha1> <path>"); die("git update-index: --cacheinfo <mode> <sha1> <path>");
if (strtoul_ui(argv[i+1], 8, &mode) || if (strtoul_ui(argv[i+1], 8, &mode) ||
get_sha1_hex(argv[i+2], sha1) || get_sha1_hex(argv[i+2], sha1) ||
add_cacheinfo(mode, sha1, argv[i+3], 0)) add_cacheinfo(mode, sha1, argv[i+3], 0))
die("git-update-index: --cacheinfo" die("git update-index: --cacheinfo"
" cannot add %s", argv[i+3]); " cannot add %s", argv[i+3]);
i += 3; i += 3;
continue; continue;
@ -642,7 +644,7 @@ int cmd_update_index(int argc, const char **argv, const char *prefix)
if (!strcmp(path, "--chmod=-x") || if (!strcmp(path, "--chmod=-x") ||
!strcmp(path, "--chmod=+x")) { !strcmp(path, "--chmod=+x")) {
if (argc <= i+1) if (argc <= i+1)
die("git-update-index: %s <path>", path); die("git update-index: %s <path>", path);
set_executable_bit = path[8]; set_executable_bit = path[8];
continue; continue;
} }
@ -687,6 +689,7 @@ int cmd_update_index(int argc, const char **argv, const char *prefix)
goto finish; goto finish;
} }
if (!strcmp(path, "--again") || !strcmp(path, "-g")) { if (!strcmp(path, "--again") || !strcmp(path, "-g")) {
setup_work_tree();
has_errors = do_reupdate(argc - i, argv + i, has_errors = do_reupdate(argc - i, argv + i,
prefix, prefix_length); prefix, prefix_length);
if (has_errors) if (has_errors)
@ -705,6 +708,7 @@ int cmd_update_index(int argc, const char **argv, const char *prefix)
usage(update_index_usage); usage(update_index_usage);
die("unknown option %s", path); die("unknown option %s", path);
} }
setup_work_tree();
p = prefix_path(prefix, prefix_length, path); p = prefix_path(prefix, prefix_length, path);
update_one(p, NULL, 0); update_one(p, NULL, 0);
if (set_executable_bit) if (set_executable_bit)
@ -717,6 +721,7 @@ int cmd_update_index(int argc, const char **argv, const char *prefix)
strbuf_init(&buf, 0); strbuf_init(&buf, 0);
strbuf_init(&nbuf, 0); strbuf_init(&nbuf, 0);
setup_work_tree();
while (strbuf_getline(&buf, stdin, line_termination) != EOF) { while (strbuf_getline(&buf, stdin, line_termination) != EOF) {
const char *p; const char *p;
if (line_termination && buf.buf[0] == '"') { if (line_termination && buf.buf[0] == '"') {

View File

@ -97,7 +97,7 @@ int get_ack(int fd, unsigned char *result_sha1)
int len = packet_read_line(fd, line, sizeof(line)); int len = packet_read_line(fd, line, sizeof(line));
if (!len) if (!len)
die("git-fetch-pack: expected ACK/NAK, got EOF"); die("git fetch-pack: expected ACK/NAK, got EOF");
if (line[len-1] == '\n') if (line[len-1] == '\n')
line[--len] = 0; line[--len] = 0;
if (!strcmp(line, "NAK")) if (!strcmp(line, "NAK"))
@ -109,7 +109,7 @@ int get_ack(int fd, unsigned char *result_sha1)
return 1; return 1;
} }
} }
die("git-fetch_pack: expected ACK/NAK, got '%s'", line); die("git fetch_pack: expected ACK/NAK, got '%s'", line);
} }
int path_match(const char *path, int nr, char **match) int path_match(const char *path, int nr, char **match)

20
entry.c
View File

@ -111,7 +111,7 @@ static int write_entry(struct cache_entry *ce, char *path, const struct checkout
case S_IFREG: case S_IFREG:
new = read_blob_entry(ce, path, &size); new = read_blob_entry(ce, path, &size);
if (!new) if (!new)
return error("git-checkout-index: unable to read sha1 file of %s (%s)", return error("git checkout-index: unable to read sha1 file of %s (%s)",
path, sha1_to_hex(ce->sha1)); path, sha1_to_hex(ce->sha1));
/* /*
@ -132,7 +132,7 @@ static int write_entry(struct cache_entry *ce, char *path, const struct checkout
fd = create_file(path, ce->ce_mode); fd = create_file(path, ce->ce_mode);
if (fd < 0) { if (fd < 0) {
free(new); free(new);
return error("git-checkout-index: unable to create file %s (%s)", return error("git checkout-index: unable to create file %s (%s)",
path, strerror(errno)); path, strerror(errno));
} }
@ -140,12 +140,12 @@ static int write_entry(struct cache_entry *ce, char *path, const struct checkout
close(fd); close(fd);
free(new); free(new);
if (wrote != size) if (wrote != size)
return error("git-checkout-index: unable to write file %s", path); return error("git checkout-index: unable to write file %s", path);
break; break;
case S_IFLNK: case S_IFLNK:
new = read_blob_entry(ce, path, &size); new = read_blob_entry(ce, path, &size);
if (!new) if (!new)
return error("git-checkout-index: unable to read sha1 file of %s (%s)", return error("git checkout-index: unable to read sha1 file of %s (%s)",
path, sha1_to_hex(ce->sha1)); path, sha1_to_hex(ce->sha1));
if (to_tempfile || !has_symlinks) { if (to_tempfile || !has_symlinks) {
if (to_tempfile) { if (to_tempfile) {
@ -155,31 +155,31 @@ static int write_entry(struct cache_entry *ce, char *path, const struct checkout
fd = create_file(path, 0666); fd = create_file(path, 0666);
if (fd < 0) { if (fd < 0) {
free(new); free(new);
return error("git-checkout-index: unable to create " return error("git checkout-index: unable to create "
"file %s (%s)", path, strerror(errno)); "file %s (%s)", path, strerror(errno));
} }
wrote = write_in_full(fd, new, size); wrote = write_in_full(fd, new, size);
close(fd); close(fd);
free(new); free(new);
if (wrote != size) if (wrote != size)
return error("git-checkout-index: unable to write file %s", return error("git checkout-index: unable to write file %s",
path); path);
} else { } else {
wrote = symlink(new, path); wrote = symlink(new, path);
free(new); free(new);
if (wrote) if (wrote)
return error("git-checkout-index: unable to create " return error("git checkout-index: unable to create "
"symlink %s (%s)", path, strerror(errno)); "symlink %s (%s)", path, strerror(errno));
} }
break; break;
case S_IFGITLINK: case S_IFGITLINK:
if (to_tempfile) if (to_tempfile)
return error("git-checkout-index: cannot create temporary subproject %s", path); return error("git checkout-index: cannot create temporary subproject %s", path);
if (mkdir(path, 0777) < 0) if (mkdir(path, 0777) < 0)
return error("git-checkout-index: cannot create subproject directory %s", path); return error("git checkout-index: cannot create subproject directory %s", path);
break; break;
default: default:
return error("git-checkout-index: unknown file mode for %s", path); return error("git checkout-index: unknown file mode for %s", path);
} }
if (state->refresh_cache) { if (state->refresh_cache) {

2
git.c
View File

@ -286,7 +286,7 @@ static void handle_internal_command(int argc, const char **argv)
{ "count-objects", cmd_count_objects, RUN_SETUP }, { "count-objects", cmd_count_objects, RUN_SETUP },
{ "describe", cmd_describe, RUN_SETUP }, { "describe", cmd_describe, RUN_SETUP },
{ "diff", cmd_diff }, { "diff", cmd_diff },
{ "diff-files", cmd_diff_files, RUN_SETUP }, { "diff-files", cmd_diff_files, RUN_SETUP | NEED_WORK_TREE },
{ "diff-index", cmd_diff_index, RUN_SETUP }, { "diff-index", cmd_diff_index, RUN_SETUP },
{ "diff-tree", cmd_diff_tree, RUN_SETUP }, { "diff-tree", cmd_diff_tree, RUN_SETUP },
{ "fast-export", cmd_fast_export, RUN_SETUP }, { "fast-export", cmd_fast_export, RUN_SETUP },

View File

@ -27,7 +27,7 @@ static int merge_entry(int pos, const char *path)
int found; int found;
if (pos >= active_nr) if (pos >= active_nr)
die("git-merge-index: %s not in the cache", path); die("git merge-index: %s not in the cache", path);
arguments[0] = pgm; arguments[0] = pgm;
arguments[1] = ""; arguments[1] = "";
arguments[2] = ""; arguments[2] = "";
@ -53,7 +53,7 @@ static int merge_entry(int pos, const char *path)
arguments[stage + 4] = ownbuf[stage]; arguments[stage + 4] = ownbuf[stage];
} while (++pos < active_nr); } while (++pos < active_nr);
if (!found) if (!found)
die("git-merge-index: %s not in the cache", path); die("git merge-index: %s not in the cache", path);
run_program(); run_program();
return found; return found;
} }
@ -117,7 +117,7 @@ int main(int argc, char **argv)
merge_all(); merge_all();
continue; continue;
} }
die("git-merge-index: unknown option %s", arg); die("git merge-index: unknown option %s", arg);
} }
merge_file(arg); merge_file(arg);
} }

View File

@ -581,6 +581,8 @@ const char *setup_git_directory(void)
if (retval && chdir(retval)) if (retval && chdir(retval))
die ("Could not jump back into original cwd"); die ("Could not jump back into original cwd");
rel = get_relative_cwd(buffer, PATH_MAX, get_git_work_tree()); rel = get_relative_cwd(buffer, PATH_MAX, get_git_work_tree());
if (rel && *rel && chdir(get_git_work_tree()))
die ("Could not jump to working directory");
return rel && *rel ? strcat(rel, "/") : NULL; return rel && *rel ? strcat(rel, "/") : NULL;
} }

View File

@ -25,6 +25,7 @@ int recv_sideband(const char *me, int in_stream, int out, int err)
unsigned sf; unsigned sf;
char buf[LARGE_PACKET_MAX + 2*FIX_SIZE]; char buf[LARGE_PACKET_MAX + 2*FIX_SIZE];
char *suffix, *term; char *suffix, *term;
int skip_pf = 0;
memcpy(buf, PREFIX, pf); memcpy(buf, PREFIX, pf);
term = getenv("TERM"); term = getenv("TERM");
@ -54,39 +55,58 @@ int recv_sideband(const char *me, int in_stream, int out, int err)
return SIDEBAND_REMOTE_ERROR; return SIDEBAND_REMOTE_ERROR;
case 2: case 2:
buf[pf] = ' '; buf[pf] = ' ';
len += pf+1; do {
while (1) { char *b = buf;
int brk = pf+1; int brk = 0;
/* Break the buffer into separate lines. */ /*
while (brk < len) { * If the last buffer didn't end with a line
* break then we should not print a prefix
* this time around.
*/
if (skip_pf) {
b += pf+1;
} else {
len += pf+1;
brk += pf+1;
}
/* Look for a line break. */
for (;;) {
brk++; brk++;
if (buf[brk-1] == '\n' || if (brk > len) {
buf[brk-1] == '\r') brk = 0;
break;
}
if (b[brk-1] == '\n' ||
b[brk-1] == '\r')
break; break;
} }
/* /*
* Let's insert a suffix to clear the end * Let's insert a suffix to clear the end
* of the screen line, but only if current * of the screen line if a line break was
* line data actually contains something. * found. Also, if we don't skip the
* prefix, then a non-empty string must be
* present too.
*/ */
if (brk > pf+1 + 1) { if (brk > (skip_pf ? 0 : (pf+1 + 1))) {
char save[FIX_SIZE]; char save[FIX_SIZE];
memcpy(save, buf + brk, sf); memcpy(save, b + brk, sf);
buf[brk + sf - 1] = buf[brk - 1]; b[brk + sf - 1] = b[brk - 1];
memcpy(buf + brk - 1, suffix, sf); memcpy(b + brk - 1, suffix, sf);
safe_write(err, buf, brk + sf); safe_write(err, b, brk + sf);
memcpy(buf + brk, save, sf); memcpy(b + brk, save, sf);
} else len -= brk;
safe_write(err, buf, brk); } else {
int l = brk ? brk : len;
safe_write(err, b, l);
len -= l;
}
if (brk < len) { skip_pf = !brk;
memmove(buf + pf+1, buf + brk, len - brk); memmove(buf + pf+1, b + brk, len);
len = len - brk + pf+1; } while (len);
} else
break;
}
continue; continue;
case 1: case 1:
safe_write(out, buf + pf+1, len); safe_write(out, buf + pf+1, len);

View File

@ -85,7 +85,7 @@ $test_case 'add (with different case)' '
rm camelcase && rm camelcase &&
echo 1 >CamelCase && echo 1 >CamelCase &&
git add CamelCase && git add CamelCase &&
test $(git-ls-files | grep -i camelcase | wc -l) = 1 test $(git ls-files | grep -i camelcase | wc -l) = 1
' '

View File

@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
test_description="git-hash-object" test_description="git hash-object"
. ./test-lib.sh . ./test-lib.sh

View File

@ -78,7 +78,7 @@ test_expect_success 'git whatchanged -p --root' 'cmp whatchanged.expect whatchan
git tag my-first-tag git tag my-first-tag
test_expect_success 'git tag my-first-tag' 'cmp .git/refs/heads/master .git/refs/tags/my-first-tag' test_expect_success 'git tag my-first-tag' 'cmp .git/refs/heads/master .git/refs/tags/my-first-tag'
# TODO: test git-clone # TODO: test git clone
git checkout -b mybranch git checkout -b mybranch
test_expect_success 'git checkout -b mybranch' 'cmp .git/refs/heads/master .git/refs/heads/mybranch' test_expect_success 'git checkout -b mybranch' 'cmp .git/refs/heads/master .git/refs/heads/mybranch'

View File

@ -35,7 +35,7 @@ test_expect_success 'add key in different section' '
' '
SECTION="test.q\"s\\sq'sp e.key" SECTION="test.q\"s\\sq'sp e.key"
test_expect_success 'make sure git-config escapes section names properly' ' test_expect_success 'make sure git config escapes section names properly' '
git config "$SECTION" bar && git config "$SECTION" bar &&
check "$SECTION" bar check "$SECTION" bar
' '

View File

@ -228,21 +228,21 @@ test_expect_success \
'echo TEST >F && 'echo TEST >F &&
git add F && git add F &&
GIT_AUTHOR_DATE="2005-05-26 23:30" \ GIT_AUTHOR_DATE="2005-05-26 23:30" \
GIT_COMMITTER_DATE="2005-05-26 23:30" git-commit -m add -a && GIT_COMMITTER_DATE="2005-05-26 23:30" git commit -m add -a &&
h_TEST=$(git rev-parse --verify HEAD) h_TEST=$(git rev-parse --verify HEAD)
echo The other day this did not work. >M && echo The other day this did not work. >M &&
echo And then Bob told me how to fix it. >>M && echo And then Bob told me how to fix it. >>M &&
echo OTHER >F && echo OTHER >F &&
GIT_AUTHOR_DATE="2005-05-26 23:41" \ GIT_AUTHOR_DATE="2005-05-26 23:41" \
GIT_COMMITTER_DATE="2005-05-26 23:41" git-commit -F M -a && GIT_COMMITTER_DATE="2005-05-26 23:41" git commit -F M -a &&
h_OTHER=$(git rev-parse --verify HEAD) && h_OTHER=$(git rev-parse --verify HEAD) &&
GIT_AUTHOR_DATE="2005-05-26 23:44" \ GIT_AUTHOR_DATE="2005-05-26 23:44" \
GIT_COMMITTER_DATE="2005-05-26 23:44" git-commit --amend && GIT_COMMITTER_DATE="2005-05-26 23:44" git commit --amend &&
h_FIXED=$(git rev-parse --verify HEAD) && h_FIXED=$(git rev-parse --verify HEAD) &&
echo Merged initial commit and a later commit. >M && echo Merged initial commit and a later commit. >M &&
echo $h_TEST >.git/MERGE_HEAD && echo $h_TEST >.git/MERGE_HEAD &&
GIT_AUTHOR_DATE="2005-05-26 23:45" \ GIT_AUTHOR_DATE="2005-05-26 23:45" \
GIT_COMMITTER_DATE="2005-05-26 23:45" git-commit -F M && GIT_COMMITTER_DATE="2005-05-26 23:45" git commit -F M &&
h_MERGED=$(git rev-parse --verify HEAD) && h_MERGED=$(git rev-parse --verify HEAD) &&
rm -f M' rm -f M'
@ -253,7 +253,7 @@ $h_OTHER $h_FIXED $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> 1117151040 +0000 co
$h_FIXED $h_MERGED $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> 1117151100 +0000 commit (merge): Merged initial commit and a later commit. $h_FIXED $h_MERGED $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> 1117151100 +0000 commit (merge): Merged initial commit and a later commit.
EOF EOF
test_expect_success \ test_expect_success \
'git-commit logged updates' \ 'git commit logged updates' \
"diff expect .git/logs/$m" "diff expect .git/logs/$m"
unset h_TEST h_OTHER h_FIXED h_MERGED unset h_TEST h_OTHER h_FIXED h_MERGED

View File

@ -28,6 +28,7 @@ test_rev_parse() {
[ $# -eq 0 ] && return [ $# -eq 0 ] && return
} }
EMPTY_TREE=$(git write-tree)
mkdir -p work/sub/dir || exit 1 mkdir -p work/sub/dir || exit 1
mv .git repo.git || exit 1 mv .git repo.git || exit 1
@ -106,12 +107,71 @@ test_expect_success 'repo finds its work tree from work tree, too' '
' '
test_expect_success '_gently() groks relative GIT_DIR & GIT_WORK_TREE' ' test_expect_success '_gently() groks relative GIT_DIR & GIT_WORK_TREE' '
cd repo.git/work/sub/dir && (cd repo.git/work/sub/dir &&
GIT_DIR=../../.. GIT_WORK_TREE=../.. GIT_PAGER= \ GIT_DIR=../../.. GIT_WORK_TREE=../.. GIT_PAGER= \
git diff --exit-code tracked && git diff --exit-code tracked &&
echo changed > tracked && echo changed > tracked &&
! GIT_DIR=../../.. GIT_WORK_TREE=../.. GIT_PAGER= \ ! GIT_DIR=../../.. GIT_WORK_TREE=../.. GIT_PAGER= \
git diff --exit-code tracked git diff --exit-code tracked)
'
cat > diff-index-cached.expected <<\EOF
:000000 100644 0000000000000000000000000000000000000000 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 A sub/dir/tracked
EOF
cat > diff-index.expected <<\EOF
:000000 100644 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 A sub/dir/tracked
EOF
test_expect_success 'git diff-index' '
GIT_DIR=repo.git GIT_WORK_TREE=repo.git/work git diff-index $EMPTY_TREE > result &&
test_cmp diff-index.expected result &&
GIT_DIR=repo.git git diff-index --cached $EMPTY_TREE > result &&
test_cmp diff-index-cached.expected result
'
cat >diff-files.expected <<\EOF
:100644 100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0000000000000000000000000000000000000000 M sub/dir/tracked
EOF
test_expect_success 'git diff-files' '
GIT_DIR=repo.git GIT_WORK_TREE=repo.git/work git diff-files > result &&
test_cmp diff-files.expected result
'
cat >diff-TREE.expected <<\EOF
diff --git a/sub/dir/tracked b/sub/dir/tracked
new file mode 100644
index 0000000..5ea2ed4
--- /dev/null
+++ b/sub/dir/tracked
@@ -0,0 +1 @@
+changed
EOF
cat >diff-TREE-cached.expected <<\EOF
diff --git a/sub/dir/tracked b/sub/dir/tracked
new file mode 100644
index 0000000..e69de29
EOF
cat >diff-FILES.expected <<\EOF
diff --git a/sub/dir/tracked b/sub/dir/tracked
index e69de29..5ea2ed4 100644
--- a/sub/dir/tracked
+++ b/sub/dir/tracked
@@ -0,0 +1 @@
+changed
EOF
test_expect_success 'git diff' '
GIT_DIR=repo.git GIT_WORK_TREE=repo.git/work git diff $EMPTY_TREE > result &&
test_cmp diff-TREE.expected result &&
GIT_DIR=repo.git git diff --cached $EMPTY_TREE > result &&
test_cmp diff-TREE-cached.expected result &&
GIT_DIR=repo.git GIT_WORK_TREE=repo.git/work git diff > result &&
test_cmp diff-FILES.expected result
'
test_expect_success 'git grep' '
(cd repo.git/work/sub &&
GIT_DIR=../.. GIT_WORK_TREE=.. git grep -l changed | grep -q dir/tracked)
' '
test_done test_done

View File

@ -23,7 +23,7 @@ add_line_into_file()
fi fi
test_tick test_tick
git-commit --quiet -m "$MSG" $_file git commit --quiet -m "$MSG" $_file
} }
HASH1= HASH1=

View File

@ -13,7 +13,7 @@ file if core.symlinks is false.'
test_expect_success \ test_expect_success \
'preparation' ' 'preparation' '
git config core.symlinks false && git config core.symlinks false &&
l=$(echo -n file | git-hash-object -t blob -w --stdin) && l=$(echo -n file | git hash-object -t blob -w --stdin) &&
echo "120000 $l symlink" | git update-index --index-info' echo "120000 $l symlink" | git update-index --index-info'
test_expect_success \ test_expect_success \
@ -23,6 +23,6 @@ test -f symlink'
test_expect_success \ test_expect_success \
'the file must be the blob we added during the setup' ' 'the file must be the blob we added during the setup' '
test "$(git-hash-object -t blob symlink)" = $l' test "$(git hash-object -t blob symlink)" = $l'
test_done test_done

View File

@ -26,8 +26,8 @@ chmod +x .git/hooks/post-commit'
test_expect_success 'post-commit hook used ordinarily' ' test_expect_success 'post-commit hook used ordinarily' '
echo initial >top && echo initial >top &&
git-add top git add top
git-commit -m initial && git commit -m initial &&
test -r "${COMMIT_FILE}" test -r "${COMMIT_FILE}"
' '

View File

@ -40,7 +40,7 @@ test_expect_success 'update-index --remove --again' \
git ls-files -s >current && git ls-files -s >current &&
cmp current expected' cmp current expected'
test_expect_success 'first commit' 'git-commit -m initial' test_expect_success 'first commit' 'git commit -m initial'
cat > expected <<\EOF cat > expected <<\EOF
100644 53ab446c3f4e42ce9bb728a0ccb283a101be4979 0 dir1/file3 100644 53ab446c3f4e42ce9bb728a0ccb283a101be4979 0 dir1/file3

View File

@ -13,7 +13,7 @@ even if a plain file is in the working tree if core.symlinks is false.'
test_expect_success \ test_expect_success \
'preparation' ' 'preparation' '
git config core.symlinks false && git config core.symlinks false &&
l=$(echo -n file | git-hash-object -t blob -w --stdin) && l=$(echo -n file | git hash-object -t blob -w --stdin) &&
echo "120000 $l symlink" | git update-index --index-info' echo "120000 $l symlink" | git update-index --index-info'
test_expect_success \ test_expect_success \

View File

@ -26,7 +26,7 @@ test_expect_success setup '
echo initial >dir2/sub3 && echo initial >dir2/sub3 &&
git add check dir1 dir2 top foo && git add check dir1 dir2 top foo &&
test_tick test_tick
git-commit -m initial && git commit -m initial &&
echo changed >check && echo changed >check &&
echo changed >top && echo changed >top &&
@ -40,20 +40,20 @@ test_expect_success update '
' '
test_expect_success 'update noticed a removal' ' test_expect_success 'update noticed a removal' '
test "$(git-ls-files dir1/sub1)" = "" test "$(git ls-files dir1/sub1)" = ""
' '
test_expect_success 'update touched correct path' ' test_expect_success 'update touched correct path' '
test "$(git-diff-files --name-status dir2/sub3)" = "" test "$(git diff-files --name-status dir2/sub3)" = ""
' '
test_expect_success 'update did not touch other tracked files' ' test_expect_success 'update did not touch other tracked files' '
test "$(git-diff-files --name-status check)" = "M check" && test "$(git diff-files --name-status check)" = "M check" &&
test "$(git-diff-files --name-status top)" = "M top" test "$(git diff-files --name-status top)" = "M top"
' '
test_expect_success 'update did not touch untracked files' ' test_expect_success 'update did not touch untracked files' '
test "$(git-ls-files dir2/other)" = "" test "$(git ls-files dir2/other)" = ""
' '
test_expect_success 'cache tree has not been corrupted' ' test_expect_success 'cache tree has not been corrupted' '

View File

@ -96,7 +96,7 @@ cat > expect << EOF
# three/ # three/
EOF EOF
test_expect_success 'git-status honours core.excludesfile' \ test_expect_success 'git status honors core.excludesfile' \
'test_cmp expect output' 'test_cmp expect output'
test_expect_success 'trailing slash in exclude allows directory match(1)' ' test_expect_success 'trailing slash in exclude allows directory match(1)' '

View File

@ -13,7 +13,7 @@ line.
touch foo bar touch foo bar
git update-index --add foo bar git update-index --add foo bar
git-commit -m "add foo bar" git commit -m "add foo bar"
test_expect_success \ test_expect_success \
'git ls-files --error-unmatch should fail with unmatched path.' \ 'git ls-files --error-unmatch should fail with unmatched path.' \

View File

@ -241,7 +241,7 @@ test_expect_success 'merge-recursive simple' '
rm -fr [abcd] && rm -fr [abcd] &&
git checkout -f "$c2" && git checkout -f "$c2" &&
git-merge-recursive "$c0" -- "$c2" "$c1" git merge-recursive "$c0" -- "$c2" "$c1"
status=$? status=$?
case "$status" in case "$status" in
1) 1)
@ -285,7 +285,7 @@ test_expect_success 'merge-recursive remove conflict' '
rm -fr [abcd] && rm -fr [abcd] &&
git checkout -f "$c1" && git checkout -f "$c1" &&
git-merge-recursive "$c0" -- "$c1" "$c5" git merge-recursive "$c0" -- "$c1" "$c5"
status=$? status=$?
case "$status" in case "$status" in
1) 1)
@ -317,7 +317,7 @@ test_expect_success 'merge-recursive d/f simple' '
git reset --hard && git reset --hard &&
git checkout -f "$c1" && git checkout -f "$c1" &&
git-merge-recursive "$c0" -- "$c1" "$c3" git merge-recursive "$c0" -- "$c1" "$c3"
' '
test_expect_success 'merge-recursive result' ' test_expect_success 'merge-recursive result' '
@ -339,7 +339,7 @@ test_expect_success 'merge-recursive d/f conflict' '
git reset --hard && git reset --hard &&
git checkout -f "$c1" && git checkout -f "$c1" &&
git-merge-recursive "$c0" -- "$c1" "$c4" git merge-recursive "$c0" -- "$c1" "$c4"
status=$? status=$?
case "$status" in case "$status" in
1) 1)
@ -373,7 +373,7 @@ test_expect_success 'merge-recursive d/f conflict the other way' '
git reset --hard && git reset --hard &&
git checkout -f "$c4" && git checkout -f "$c4" &&
git-merge-recursive "$c0" -- "$c4" "$c1" git merge-recursive "$c0" -- "$c4" "$c1"
status=$? status=$?
case "$status" in case "$status" in
1) 1)
@ -407,7 +407,7 @@ test_expect_success 'merge-recursive d/f conflict' '
git reset --hard && git reset --hard &&
git checkout -f "$c1" && git checkout -f "$c1" &&
git-merge-recursive "$c0" -- "$c1" "$c6" git merge-recursive "$c0" -- "$c1" "$c6"
status=$? status=$?
case "$status" in case "$status" in
1) 1)
@ -441,7 +441,7 @@ test_expect_success 'merge-recursive d/f conflict' '
git reset --hard && git reset --hard &&
git checkout -f "$c6" && git checkout -f "$c6" &&
git-merge-recursive "$c0" -- "$c6" "$c1" git merge-recursive "$c0" -- "$c6" "$c1"
status=$? status=$?
case "$status" in case "$status" in
1) 1)

View File

@ -14,10 +14,10 @@ test_expect_success \
'prepare a trivial repository' \ 'prepare a trivial repository' \
'echo Hello > A && 'echo Hello > A &&
git update-index --add A && git update-index --add A &&
git-commit -m "Initial commit." && git commit -m "Initial commit." &&
echo World >> A && echo World >> A &&
git update-index --add A && git update-index --add A &&
git-commit -m "Second commit." && git commit -m "Second commit." &&
HEAD=$(git rev-parse --verify HEAD)' HEAD=$(git rev-parse --verify HEAD)'
test_expect_success \ test_expect_success \
@ -123,7 +123,7 @@ test_expect_success \
test_expect_success 'test tracking setup via --track' \ test_expect_success 'test tracking setup via --track' \
'git config remote.local.url . && 'git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* && git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
(git show-ref -q refs/remotes/local/master || git-fetch local) && (git show-ref -q refs/remotes/local/master || git fetch local) &&
git branch --track my1 local/master && git branch --track my1 local/master &&
test $(git config branch.my1.remote) = local && test $(git config branch.my1.remote) = local &&
test $(git config branch.my1.merge) = refs/heads/master' test $(git config branch.my1.merge) = refs/heads/master'
@ -131,7 +131,7 @@ test_expect_success 'test tracking setup via --track' \
test_expect_success 'test tracking setup (non-wildcard, matching)' \ test_expect_success 'test tracking setup (non-wildcard, matching)' \
'git config remote.local.url . && 'git config remote.local.url . &&
git config remote.local.fetch refs/heads/master:refs/remotes/local/master && git config remote.local.fetch refs/heads/master:refs/remotes/local/master &&
(git show-ref -q refs/remotes/local/master || git-fetch local) && (git show-ref -q refs/remotes/local/master || git fetch local) &&
git branch --track my4 local/master && git branch --track my4 local/master &&
test $(git config branch.my4.remote) = local && test $(git config branch.my4.remote) = local &&
test $(git config branch.my4.merge) = refs/heads/master' test $(git config branch.my4.merge) = refs/heads/master'
@ -139,7 +139,7 @@ test_expect_success 'test tracking setup (non-wildcard, matching)' \
test_expect_success 'test tracking setup (non-wildcard, not matching)' \ test_expect_success 'test tracking setup (non-wildcard, not matching)' \
'git config remote.local.url . && 'git config remote.local.url . &&
git config remote.local.fetch refs/heads/s:refs/remotes/local/s && git config remote.local.fetch refs/heads/s:refs/remotes/local/s &&
(git show-ref -q refs/remotes/local/master || git-fetch local) && (git show-ref -q refs/remotes/local/master || git fetch local) &&
git branch --track my5 local/master && git branch --track my5 local/master &&
! test "$(git config branch.my5.remote)" = local && ! test "$(git config branch.my5.remote)" = local &&
! test "$(git config branch.my5.merge)" = refs/heads/master' ! test "$(git config branch.my5.merge)" = refs/heads/master'
@ -148,7 +148,7 @@ test_expect_success 'test tracking setup via config' \
'git config branch.autosetupmerge true && 'git config branch.autosetupmerge true &&
git config remote.local.url . && git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* && git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
(git show-ref -q refs/remotes/local/master || git-fetch local) && (git show-ref -q refs/remotes/local/master || git fetch local) &&
git branch my3 local/master && git branch my3 local/master &&
test $(git config branch.my3.remote) = local && test $(git config branch.my3.remote) = local &&
test $(git config branch.my3.merge) = refs/heads/master' test $(git config branch.my3.merge) = refs/heads/master'
@ -157,7 +157,7 @@ test_expect_success 'test overriding tracking setup via --no-track' \
'git config branch.autosetupmerge true && 'git config branch.autosetupmerge true &&
git config remote.local.url . && git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* && git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
(git show-ref -q refs/remotes/local/master || git-fetch local) && (git show-ref -q refs/remotes/local/master || git fetch local) &&
git branch --no-track my2 local/master && git branch --no-track my2 local/master &&
git config branch.autosetupmerge false && git config branch.autosetupmerge false &&
! test "$(git config branch.my2.remote)" = local && ! test "$(git config branch.my2.remote)" = local &&
@ -173,7 +173,7 @@ test_expect_success 'no tracking without .fetch entries' \
test_expect_success 'test tracking setup via --track but deeper' \ test_expect_success 'test tracking setup via --track but deeper' \
'git config remote.local.url . && 'git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* && git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
(git show-ref -q refs/remotes/local/o/o || git-fetch local) && (git show-ref -q refs/remotes/local/o/o || git fetch local) &&
git branch --track my7 local/o/o && git branch --track my7 local/o/o &&
test "$(git config branch.my7.remote)" = local && test "$(git config branch.my7.remote)" = local &&
test "$(git config branch.my7.merge)" = refs/heads/o/o' test "$(git config branch.my7.merge)" = refs/heads/o/o'
@ -209,7 +209,7 @@ EOF
test_expect_success \ test_expect_success \
'git checkout -b g/h/i -l should create a branch and a log' \ 'git checkout -b g/h/i -l should create a branch and a log' \
'GIT_COMMITTER_DATE="2005-05-26 23:30" \ 'GIT_COMMITTER_DATE="2005-05-26 23:30" \
git-checkout -b g/h/i -l master && git checkout -b g/h/i -l master &&
test -f .git/refs/heads/g/h/i && test -f .git/refs/heads/g/h/i &&
test -f .git/logs/refs/heads/g/h/i && test -f .git/logs/refs/heads/g/h/i &&
diff expect .git/logs/refs/heads/g/h/i' diff expect .git/logs/refs/heads/g/h/i'
@ -228,7 +228,7 @@ test_expect_success 'autosetuprebase local on a tracked local branch' '
git config remote.local.url . && git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* && git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
git config branch.autosetuprebase local && git config branch.autosetuprebase local &&
(git show-ref -q refs/remotes/local/o || git-fetch local) && (git show-ref -q refs/remotes/local/o || git fetch local) &&
git branch mybase && git branch mybase &&
git branch --track myr1 mybase && git branch --track myr1 mybase &&
test "$(git config branch.myr1.remote)" = . && test "$(git config branch.myr1.remote)" = . &&
@ -240,7 +240,7 @@ test_expect_success 'autosetuprebase always on a tracked local branch' '
git config remote.local.url . && git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* && git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
git config branch.autosetuprebase always && git config branch.autosetuprebase always &&
(git show-ref -q refs/remotes/local/o || git-fetch local) && (git show-ref -q refs/remotes/local/o || git fetch local) &&
git branch mybase2 && git branch mybase2 &&
git branch --track myr2 mybase && git branch --track myr2 mybase &&
test "$(git config branch.myr2.remote)" = . && test "$(git config branch.myr2.remote)" = . &&
@ -252,7 +252,7 @@ test_expect_success 'autosetuprebase remote on a tracked local branch' '
git config remote.local.url . && git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* && git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
git config branch.autosetuprebase remote && git config branch.autosetuprebase remote &&
(git show-ref -q refs/remotes/local/o || git-fetch local) && (git show-ref -q refs/remotes/local/o || git fetch local) &&
git branch mybase3 && git branch mybase3 &&
git branch --track myr3 mybase2 && git branch --track myr3 mybase2 &&
test "$(git config branch.myr3.remote)" = . && test "$(git config branch.myr3.remote)" = . &&
@ -264,7 +264,7 @@ test_expect_success 'autosetuprebase never on a tracked local branch' '
git config remote.local.url . && git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* && git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
git config branch.autosetuprebase never && git config branch.autosetuprebase never &&
(git show-ref -q refs/remotes/local/o || git-fetch local) && (git show-ref -q refs/remotes/local/o || git fetch local) &&
git branch mybase4 && git branch mybase4 &&
git branch --track myr4 mybase2 && git branch --track myr4 mybase2 &&
test "$(git config branch.myr4.remote)" = . && test "$(git config branch.myr4.remote)" = . &&
@ -276,7 +276,7 @@ test_expect_success 'autosetuprebase local on a tracked remote branch' '
git config remote.local.url . && git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* && git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
git config branch.autosetuprebase local && git config branch.autosetuprebase local &&
(git show-ref -q refs/remotes/local/master || git-fetch local) && (git show-ref -q refs/remotes/local/master || git fetch local) &&
git branch --track myr5 local/master && git branch --track myr5 local/master &&
test "$(git config branch.myr5.remote)" = local && test "$(git config branch.myr5.remote)" = local &&
test "$(git config branch.myr5.merge)" = refs/heads/master && test "$(git config branch.myr5.merge)" = refs/heads/master &&
@ -287,7 +287,7 @@ test_expect_success 'autosetuprebase never on a tracked remote branch' '
git config remote.local.url . && git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* && git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
git config branch.autosetuprebase never && git config branch.autosetuprebase never &&
(git show-ref -q refs/remotes/local/master || git-fetch local) && (git show-ref -q refs/remotes/local/master || git fetch local) &&
git branch --track myr6 local/master && git branch --track myr6 local/master &&
test "$(git config branch.myr6.remote)" = local && test "$(git config branch.myr6.remote)" = local &&
test "$(git config branch.myr6.merge)" = refs/heads/master && test "$(git config branch.myr6.merge)" = refs/heads/master &&
@ -298,7 +298,7 @@ test_expect_success 'autosetuprebase remote on a tracked remote branch' '
git config remote.local.url . && git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* && git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
git config branch.autosetuprebase remote && git config branch.autosetuprebase remote &&
(git show-ref -q refs/remotes/local/master || git-fetch local) && (git show-ref -q refs/remotes/local/master || git fetch local) &&
git branch --track myr7 local/master && git branch --track myr7 local/master &&
test "$(git config branch.myr7.remote)" = local && test "$(git config branch.myr7.remote)" = local &&
test "$(git config branch.myr7.merge)" = refs/heads/master && test "$(git config branch.myr7.merge)" = refs/heads/master &&
@ -309,7 +309,7 @@ test_expect_success 'autosetuprebase always on a tracked remote branch' '
git config remote.local.url . && git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* && git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
git config branch.autosetuprebase remote && git config branch.autosetuprebase remote &&
(git show-ref -q refs/remotes/local/master || git-fetch local) && (git show-ref -q refs/remotes/local/master || git fetch local) &&
git branch --track myr8 local/master && git branch --track myr8 local/master &&
test "$(git config branch.myr8.remote)" = local && test "$(git config branch.myr8.remote)" = local &&
test "$(git config branch.myr8.merge)" = refs/heads/master && test "$(git config branch.myr8.merge)" = refs/heads/master &&
@ -320,7 +320,7 @@ test_expect_success 'autosetuprebase unconfigured on a tracked remote branch' '
git config --unset branch.autosetuprebase && git config --unset branch.autosetuprebase &&
git config remote.local.url . && git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* && git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
(git show-ref -q refs/remotes/local/master || git-fetch local) && (git show-ref -q refs/remotes/local/master || git fetch local) &&
git branch --track myr9 local/master && git branch --track myr9 local/master &&
test "$(git config branch.myr9.remote)" = local && test "$(git config branch.myr9.remote)" = local &&
test "$(git config branch.myr9.merge)" = refs/heads/master && test "$(git config branch.myr9.merge)" = refs/heads/master &&
@ -330,7 +330,7 @@ test_expect_success 'autosetuprebase unconfigured on a tracked remote branch' '
test_expect_success 'autosetuprebase unconfigured on a tracked local branch' ' test_expect_success 'autosetuprebase unconfigured on a tracked local branch' '
git config remote.local.url . && git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* && git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
(git show-ref -q refs/remotes/local/o || git-fetch local) && (git show-ref -q refs/remotes/local/o || git fetch local) &&
git branch mybase10 && git branch mybase10 &&
git branch --track myr10 mybase2 && git branch --track myr10 mybase2 &&
test "$(git config branch.myr10.remote)" = . && test "$(git config branch.myr10.remote)" = . &&
@ -341,7 +341,7 @@ test_expect_success 'autosetuprebase unconfigured on a tracked local branch' '
test_expect_success 'autosetuprebase unconfigured on untracked local branch' ' test_expect_success 'autosetuprebase unconfigured on untracked local branch' '
git config remote.local.url . && git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* && git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
(git show-ref -q refs/remotes/local/master || git-fetch local) && (git show-ref -q refs/remotes/local/master || git fetch local) &&
git branch --no-track myr11 mybase2 && git branch --no-track myr11 mybase2 &&
test "z$(git config branch.myr11.remote)" = z && test "z$(git config branch.myr11.remote)" = z &&
test "z$(git config branch.myr11.merge)" = z && test "z$(git config branch.myr11.merge)" = z &&
@ -351,7 +351,7 @@ test_expect_success 'autosetuprebase unconfigured on untracked local branch' '
test_expect_success 'autosetuprebase unconfigured on untracked remote branch' ' test_expect_success 'autosetuprebase unconfigured on untracked remote branch' '
git config remote.local.url . && git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* && git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
(git show-ref -q refs/remotes/local/master || git-fetch local) && (git show-ref -q refs/remotes/local/master || git fetch local) &&
git branch --no-track myr12 local/master && git branch --no-track myr12 local/master &&
test "z$(git config branch.myr12.remote)" = z && test "z$(git config branch.myr12.remote)" = z &&
test "z$(git config branch.myr12.merge)" = z && test "z$(git config branch.myr12.merge)" = z &&
@ -362,7 +362,7 @@ test_expect_success 'autosetuprebase never on an untracked local branch' '
git config branch.autosetuprebase never && git config branch.autosetuprebase never &&
git config remote.local.url . && git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* && git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
(git show-ref -q refs/remotes/local/master || git-fetch local) && (git show-ref -q refs/remotes/local/master || git fetch local) &&
git branch --no-track myr13 mybase2 && git branch --no-track myr13 mybase2 &&
test "z$(git config branch.myr13.remote)" = z && test "z$(git config branch.myr13.remote)" = z &&
test "z$(git config branch.myr13.merge)" = z && test "z$(git config branch.myr13.merge)" = z &&
@ -373,7 +373,7 @@ test_expect_success 'autosetuprebase local on an untracked local branch' '
git config branch.autosetuprebase local && git config branch.autosetuprebase local &&
git config remote.local.url . && git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* && git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
(git show-ref -q refs/remotes/local/master || git-fetch local) && (git show-ref -q refs/remotes/local/master || git fetch local) &&
git branch --no-track myr14 mybase2 && git branch --no-track myr14 mybase2 &&
test "z$(git config branch.myr14.remote)" = z && test "z$(git config branch.myr14.remote)" = z &&
test "z$(git config branch.myr14.merge)" = z && test "z$(git config branch.myr14.merge)" = z &&
@ -384,7 +384,7 @@ test_expect_success 'autosetuprebase remote on an untracked local branch' '
git config branch.autosetuprebase remote && git config branch.autosetuprebase remote &&
git config remote.local.url . && git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* && git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
(git show-ref -q refs/remotes/local/master || git-fetch local) && (git show-ref -q refs/remotes/local/master || git fetch local) &&
git branch --no-track myr15 mybase2 && git branch --no-track myr15 mybase2 &&
test "z$(git config branch.myr15.remote)" = z && test "z$(git config branch.myr15.remote)" = z &&
test "z$(git config branch.myr15.merge)" = z && test "z$(git config branch.myr15.merge)" = z &&
@ -395,7 +395,7 @@ test_expect_success 'autosetuprebase always on an untracked local branch' '
git config branch.autosetuprebase always && git config branch.autosetuprebase always &&
git config remote.local.url . && git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* && git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
(git show-ref -q refs/remotes/local/master || git-fetch local) && (git show-ref -q refs/remotes/local/master || git fetch local) &&
git branch --no-track myr16 mybase2 && git branch --no-track myr16 mybase2 &&
test "z$(git config branch.myr16.remote)" = z && test "z$(git config branch.myr16.remote)" = z &&
test "z$(git config branch.myr16.merge)" = z && test "z$(git config branch.myr16.merge)" = z &&
@ -406,7 +406,7 @@ test_expect_success 'autosetuprebase never on an untracked remote branch' '
git config branch.autosetuprebase never && git config branch.autosetuprebase never &&
git config remote.local.url . && git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* && git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
(git show-ref -q refs/remotes/local/master || git-fetch local) && (git show-ref -q refs/remotes/local/master || git fetch local) &&
git branch --no-track myr17 local/master && git branch --no-track myr17 local/master &&
test "z$(git config branch.myr17.remote)" = z && test "z$(git config branch.myr17.remote)" = z &&
test "z$(git config branch.myr17.merge)" = z && test "z$(git config branch.myr17.merge)" = z &&
@ -417,7 +417,7 @@ test_expect_success 'autosetuprebase local on an untracked remote branch' '
git config branch.autosetuprebase local && git config branch.autosetuprebase local &&
git config remote.local.url . && git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* && git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
(git show-ref -q refs/remotes/local/master || git-fetch local) && (git show-ref -q refs/remotes/local/master || git fetch local) &&
git branch --no-track myr18 local/master && git branch --no-track myr18 local/master &&
test "z$(git config branch.myr18.remote)" = z && test "z$(git config branch.myr18.remote)" = z &&
test "z$(git config branch.myr18.merge)" = z && test "z$(git config branch.myr18.merge)" = z &&
@ -428,7 +428,7 @@ test_expect_success 'autosetuprebase remote on an untracked remote branch' '
git config branch.autosetuprebase remote && git config branch.autosetuprebase remote &&
git config remote.local.url . && git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* && git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
(git show-ref -q refs/remotes/local/master || git-fetch local) && (git show-ref -q refs/remotes/local/master || git fetch local) &&
git branch --no-track myr19 local/master && git branch --no-track myr19 local/master &&
test "z$(git config branch.myr19.remote)" = z && test "z$(git config branch.myr19.remote)" = z &&
test "z$(git config branch.myr19.merge)" = z && test "z$(git config branch.myr19.merge)" = z &&
@ -439,7 +439,7 @@ test_expect_success 'autosetuprebase always on an untracked remote branch' '
git config branch.autosetuprebase always && git config branch.autosetuprebase always &&
git config remote.local.url . && git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* && git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
(git show-ref -q refs/remotes/local/master || git-fetch local) && (git show-ref -q refs/remotes/local/master || git fetch local) &&
git branch --no-track myr20 local/master && git branch --no-track myr20 local/master &&
test "z$(git config branch.myr20.remote)" = z && test "z$(git config branch.myr20.remote)" = z &&
test "z$(git config branch.myr20.merge)" = z && test "z$(git config branch.myr20.merge)" = z &&

View File

@ -17,7 +17,7 @@ test_expect_success \
'prepare a trivial repository' \ 'prepare a trivial repository' \
'echo Hello > A && 'echo Hello > A &&
git update-index --add A && git update-index --add A &&
git-commit -m "Initial commit." && git commit -m "Initial commit." &&
HEAD=$(git rev-parse --verify HEAD)' HEAD=$(git rev-parse --verify HEAD)'
SHA1= SHA1=
@ -97,7 +97,7 @@ test_expect_success \
git branch n' git branch n'
test_expect_success 'pack, prune and repack' ' test_expect_success 'pack, prune and repack' '
git-tag foo && git tag foo &&
git pack-refs --all --prune && git pack-refs --all --prune &&
git show-ref >all-of-them && git show-ref >all-of-them &&
git pack-refs && git pack-refs &&

View File

@ -16,15 +16,15 @@ test_expect_success \
'prepare repository with topic branches' \ 'prepare repository with topic branches' \
'echo First > A && 'echo First > A &&
git update-index --add A && git update-index --add A &&
git-commit -m "Add A." && git commit -m "Add A." &&
git checkout -b my-topic-branch && git checkout -b my-topic-branch &&
echo Second > B && echo Second > B &&
git update-index --add B && git update-index --add B &&
git-commit -m "Add B." && git commit -m "Add B." &&
git checkout -f master && git checkout -f master &&
echo Third >> A && echo Third >> A &&
git update-index A && git update-index A &&
git-commit -m "Modify A." && git commit -m "Modify A." &&
git checkout -b side my-topic-branch && git checkout -b side my-topic-branch &&
echo Side >> C && echo Side >> C &&
git add C && git add C &&

View File

@ -15,29 +15,29 @@ test_expect_success \
'prepare repository with topic branch' \ 'prepare repository with topic branch' \
'echo First > A && 'echo First > A &&
git update-index --add A && git update-index --add A &&
git-commit -m "Add A." && git commit -m "Add A." &&
git-checkout -b my-topic-branch && git checkout -b my-topic-branch &&
echo Second > B && echo Second > B &&
git update-index --add B && git update-index --add B &&
git-commit -m "Add B." && git commit -m "Add B." &&
echo AnotherSecond > C && echo AnotherSecond > C &&
git update-index --add C && git update-index --add C &&
git-commit -m "Add C." && git commit -m "Add C." &&
git-checkout -f master && git checkout -f master &&
echo Third >> A && echo Third >> A &&
git update-index A && git update-index A &&
git-commit -m "Modify A." git commit -m "Modify A."
' '
test_expect_success \ test_expect_success \
'pick top patch from topic branch into master' \ 'pick top patch from topic branch into master' \
'git cherry-pick my-topic-branch^0 && 'git cherry-pick my-topic-branch^0 &&
git-checkout -f my-topic-branch && git checkout -f my-topic-branch &&
git branch master-merge master && git branch master-merge master &&
git branch my-topic-branch-merge my-topic-branch git branch my-topic-branch-merge my-topic-branch
' '
@ -49,13 +49,13 @@ test_debug \
' '
test_expect_success \ test_expect_success \
'rebase topic branch against new master and check git-am did not get halted' \ 'rebase topic branch against new master and check git am did not get halted' \
'git-rebase master && test ! -d .git/rebase-apply' 'git rebase master && test ! -d .git/rebase-apply'
test_expect_success \ test_expect_success \
'rebase --merge topic branch that was partially merged upstream' \ 'rebase --merge topic branch that was partially merged upstream' \
'git-checkout -f my-topic-branch-merge && 'git checkout -f my-topic-branch-merge &&
git-rebase --merge master-merge && git rebase --merge master-merge &&
test ! -d .git/rebase-merge' test ! -d .git/rebase-merge'
test_done test_done

View File

@ -7,7 +7,7 @@ test_description='git rebase --merge --skip tests'
. ./test-lib.sh . ./test-lib.sh
# we assume the default git-am -3 --skip strategy is tested independently # we assume the default git am -3 --skip strategy is tested independently
# and always works :) # and always works :)
test_expect_success setup ' test_expect_success setup '

View File

@ -161,7 +161,7 @@ test_expect_success 'stop on conflicting pick' '
test "$(git rev-parse HEAD~3)" = "$(git rev-parse master)" && test "$(git rev-parse HEAD~3)" = "$(git rev-parse master)" &&
test_cmp expect .git/rebase-merge/patch && test_cmp expect .git/rebase-merge/patch &&
test_cmp expect2 file1 && test_cmp expect2 file1 &&
test "$(git-diff --name-status | test "$(git diff --name-status |
sed -n -e "/^U/s/^U[^a-z]*//p")" = file1 && sed -n -e "/^U/s/^U[^a-z]*//p")" = file1 &&
test 4 = $(grep -v "^#" < .git/rebase-merge/done | wc -l) && test 4 = $(grep -v "^#" < .git/rebase-merge/done | wc -l) &&
test 0 = $(grep -c "^[^#]" < .git/rebase-merge/git-rebase-todo) test 0 = $(grep -c "^[^#]" < .git/rebase-merge/git-rebase-todo)

View File

@ -52,7 +52,7 @@ testrebase() {
test -d "$dotest" && test -d "$dotest" &&
test_must_fail git rebase --skip && test_must_fail git rebase --skip &&
test $(git rev-parse HEAD) = $(git rev-parse master) && test $(git rev-parse HEAD) = $(git rev-parse master) &&
git-rebase --abort && git rebase --abort &&
test $(git rev-parse to-rebase) = $(git rev-parse pre-rebase) && test $(git rev-parse to-rebase) = $(git rev-parse pre-rebase) &&
test ! -d "$dotest" test ! -d "$dotest"
' '

View File

@ -17,25 +17,25 @@ test_expect_success \
'prepare repository with topic branch, and check cherry finds the 2 patches from there' \ 'prepare repository with topic branch, and check cherry finds the 2 patches from there' \
'echo First > A && 'echo First > A &&
git update-index --add A && git update-index --add A &&
git-commit -m "Add A." && git commit -m "Add A." &&
git-checkout -b my-topic-branch && git checkout -b my-topic-branch &&
echo Second > B && echo Second > B &&
git update-index --add B && git update-index --add B &&
git-commit -m "Add B." && git commit -m "Add B." &&
sleep 2 && sleep 2 &&
echo AnotherSecond > C && echo AnotherSecond > C &&
git update-index --add C && git update-index --add C &&
git-commit -m "Add C." && git commit -m "Add C." &&
git-checkout -f master && git checkout -f master &&
rm -f B C && rm -f B C &&
echo Third >> A && echo Third >> A &&
git update-index A && git update-index A &&
git-commit -m "Modify A." && git commit -m "Modify A." &&
expr "$(echo $(git cherry master my-topic-branch) )" : "+ [^ ]* + .*" expr "$(echo $(git cherry master my-topic-branch) )" : "+ [^ ]* + .*"
' '

View File

@ -12,14 +12,14 @@ test_expect_success \
'Initialize test directory' \ 'Initialize test directory' \
"touch -- foo bar baz 'space embedded' -q && "touch -- foo bar baz 'space embedded' -q &&
git add -- foo bar baz 'space embedded' -q && git add -- foo bar baz 'space embedded' -q &&
git-commit -m 'add normal files' && git commit -m 'add normal files' &&
test_tabs=y && test_tabs=y &&
if touch -- 'tab embedded' 'newline if touch -- 'tab embedded' 'newline
embedded' embedded'
then then
git add -- 'tab embedded' 'newline git add -- 'tab embedded' 'newline
embedded' && embedded' &&
git-commit -m 'add files with tabs and newlines' git commit -m 'add files with tabs and newlines'
else else
say 'Your filesystem does not allow tabs in filenames.' say 'Your filesystem does not allow tabs in filenames.'
test_tabs=n test_tabs=n

View File

@ -2,7 +2,7 @@
# #
# #
test_description='git-mktag: tag object verify test' test_description='git mktag: tag object verify test'
. ./test-lib.sh . ./test-lib.sh
@ -14,7 +14,7 @@ test_description='git-mktag: tag object verify test'
check_verify_failure () { check_verify_failure () {
expect="$2" expect="$2"
test_expect_success "$1" ' test_expect_success "$1" '
( test_must_fail git-mktag <tag.sig 2>message ) && ( test_must_fail git mktag <tag.sig 2>message ) &&
grep "$expect" message grep "$expect" message
' '
} }
@ -24,7 +24,7 @@ check_verify_failure () {
# for the tag. # for the tag.
echo Hello >A echo Hello >A
git update-index --add A git update-index --add A
git-commit -m "Initial commit" git commit -m "Initial commit"
head=$(git rev-parse --verify HEAD) head=$(git rev-parse --verify HEAD)
############################################################ ############################################################
@ -222,7 +222,7 @@ EOF
test_expect_success \ test_expect_success \
'allow empty tag email' \ 'allow empty tag email' \
'git-mktag <tag.sig >.git/refs/tags/mytag 2>message' 'git mktag <tag.sig >.git/refs/tags/mytag 2>message'
############################################################ ############################################################
# 16. disallow spaces in tag email # 16. disallow spaces in tag email
@ -350,14 +350,14 @@ EOF
test_expect_success \ test_expect_success \
'create valid tag' \ 'create valid tag' \
'git-mktag <tag.sig >.git/refs/tags/mytag 2>message' 'git mktag <tag.sig >.git/refs/tags/mytag 2>message'
############################################################ ############################################################
# 25. check mytag # 25. check mytag
test_expect_success \ test_expect_success \
'check mytag' \ 'check mytag' \
'git-tag -l | grep mytag' 'git tag -l | grep mytag'
test_done test_done

View File

@ -18,7 +18,7 @@ test_expect_success setup '
T=$(git write-tree) && T=$(git write-tree) &&
C=$(git commit-tree $T <"$TEST_DIRECTORY"/t3900/1-UTF-8.txt) && C=$(git commit-tree $T <"$TEST_DIRECTORY"/t3900/1-UTF-8.txt) &&
git update-ref HEAD $C && git update-ref HEAD $C &&
git-tag C0 git tag C0
' '
test_expect_success 'no encoding header for base case' ' test_expect_success 'no encoding header for base case' '
@ -30,9 +30,9 @@ for H in ISO-8859-1 EUCJP ISO-2022-JP
do do
test_expect_success "$H setup" ' test_expect_success "$H setup" '
git config i18n.commitencoding $H && git config i18n.commitencoding $H &&
git-checkout -b $H C0 && git checkout -b $H C0 &&
echo $H >F && echo $H >F &&
git-commit -a -F "$TEST_DIRECTORY"/t3900/$H.txt git commit -a -F "$TEST_DIRECTORY"/t3900/$H.txt
' '
done done

View File

@ -103,7 +103,7 @@ test_expect_success 'rebase (U/U)' '
# we want UTF-8 encoded name. # we want UTF-8 encoded name.
. "$TEST_DIRECTORY"/t3901-utf8.txt && . "$TEST_DIRECTORY"/t3901-utf8.txt &&
git checkout -b test && git checkout -b test &&
git-rebase master && git rebase master &&
check_encoding 2 check_encoding 2
' '
@ -114,7 +114,7 @@ test_expect_success 'rebase (U/L)' '
. "$TEST_DIRECTORY"/t3901-utf8.txt && . "$TEST_DIRECTORY"/t3901-utf8.txt &&
git reset --hard side && git reset --hard side &&
git-rebase master && git rebase master &&
check_encoding 2 check_encoding 2
' '
@ -126,7 +126,7 @@ test_expect_success 'rebase (L/L)' '
. "$TEST_DIRECTORY"/t3901-8859-1.txt && . "$TEST_DIRECTORY"/t3901-8859-1.txt &&
git reset --hard side && git reset --hard side &&
git-rebase master && git rebase master &&
check_encoding 2 8859 check_encoding 2 8859
' '
@ -139,7 +139,7 @@ test_expect_success 'rebase (L/U)' '
. "$TEST_DIRECTORY"/t3901-8859-1.txt && . "$TEST_DIRECTORY"/t3901-8859-1.txt &&
git reset --hard side && git reset --hard side &&
git-rebase master && git rebase master &&
check_encoding 2 8859 check_encoding 2 8859
' '
@ -211,7 +211,7 @@ test_expect_success 'rebase --merge (U/U)' '
. "$TEST_DIRECTORY"/t3901-utf8.txt && . "$TEST_DIRECTORY"/t3901-utf8.txt &&
git reset --hard side && git reset --hard side &&
git-rebase --merge master && git rebase --merge master &&
check_encoding 2 check_encoding 2
' '
@ -222,7 +222,7 @@ test_expect_success 'rebase --merge (U/L)' '
. "$TEST_DIRECTORY"/t3901-utf8.txt && . "$TEST_DIRECTORY"/t3901-utf8.txt &&
git reset --hard side && git reset --hard side &&
git-rebase --merge master && git rebase --merge master &&
check_encoding 2 check_encoding 2
' '
@ -234,7 +234,7 @@ test_expect_success 'rebase --merge (L/L)' '
. "$TEST_DIRECTORY"/t3901-8859-1.txt && . "$TEST_DIRECTORY"/t3901-8859-1.txt &&
git reset --hard side && git reset --hard side &&
git-rebase --merge master && git rebase --merge master &&
check_encoding 2 8859 check_encoding 2 8859
' '
@ -247,7 +247,7 @@ test_expect_success 'rebase --merge (L/U)' '
. "$TEST_DIRECTORY"/t3901-8859-1.txt && . "$TEST_DIRECTORY"/t3901-8859-1.txt &&
git reset --hard side && git reset --hard side &&
git-rebase --merge master && git rebase --merge master &&
check_encoding 2 8859 check_encoding 2 8859
' '

View File

@ -3,7 +3,7 @@
# Copyright (c) 2007 Johannes E Schindelin # Copyright (c) 2007 Johannes E Schindelin
# #
test_description='Test git-stash' test_description='Test git stash'
. ./test-lib.sh . ./test-lib.sh

View File

@ -61,7 +61,7 @@ test_expect_success 'apply detecting corrupt patch correctly' \
detected=`sed -ne "${detected}p" broken` && detected=`sed -ne "${detected}p" broken` &&
test "$detected" = xCIT' test "$detected" = xCIT'
test_expect_success 'initial commit' 'git-commit -a -m initial' test_expect_success 'initial commit' 'git commit -a -m initial'
# Try removal (b), modification (d), and creation (e). # Try removal (b), modification (d), and creation (e).
test_expect_success 'diff-index with --binary' \ test_expect_success 'diff-index with --binary' \
@ -72,7 +72,7 @@ test_expect_success 'diff-index with --binary' \
git apply --stat --summary current' git apply --stat --summary current'
test_expect_success 'apply binary patch' \ test_expect_success 'apply binary patch' \
'git-reset --hard && 'git reset --hard &&
git apply --binary --index <current && git apply --binary --index <current &&
tree1=`git write-tree` && tree1=`git write-tree` &&
test "$tree1" = "$tree0"' test "$tree1" = "$tree0"'

View File

@ -21,16 +21,16 @@ cat file1 >file2
cat file1 >file4 cat file1 >file4
git update-index --add --remove file1 file2 file4 git update-index --add --remove file1 file2 file4
git-commit -m 'Initial Version' 2>/dev/null git commit -m 'Initial Version' 2>/dev/null
git-checkout -b binary git checkout -b binary
perl -pe 'y/x/\000/' <file1 >file3 perl -pe 'y/x/\000/' <file1 >file3
cat file3 >file4 cat file3 >file4
git add file2 git add file2
perl -pe 'y/\000/v/' <file3 >file1 perl -pe 'y/\000/v/' <file3 >file1
rm -f file2 rm -f file2
git update-index --add --remove file1 file2 file3 file4 git update-index --add --remove file1 file2 file3 file4
git-commit -m 'Second Version' git commit -m 'Second Version'
git diff-tree -p master binary >B.diff git diff-tree -p master binary >B.diff
git diff-tree -p -C master binary >C.diff git diff-tree -p -C master binary >C.diff
@ -39,47 +39,47 @@ git diff-tree -p --binary master binary >BF.diff
git diff-tree -p --binary -C master binary >CF.diff git diff-tree -p --binary -C master binary >CF.diff
test_expect_success 'stat binary diff -- should not fail.' \ test_expect_success 'stat binary diff -- should not fail.' \
'git-checkout master 'git checkout master
git apply --stat --summary B.diff' git apply --stat --summary B.diff'
test_expect_success 'stat binary diff (copy) -- should not fail.' \ test_expect_success 'stat binary diff (copy) -- should not fail.' \
'git-checkout master 'git checkout master
git apply --stat --summary C.diff' git apply --stat --summary C.diff'
test_expect_success 'check binary diff -- should fail.' \ test_expect_success 'check binary diff -- should fail.' \
'git-checkout master && 'git checkout master &&
test_must_fail git apply --check B.diff' test_must_fail git apply --check B.diff'
test_expect_success 'check binary diff (copy) -- should fail.' \ test_expect_success 'check binary diff (copy) -- should fail.' \
'git-checkout master && 'git checkout master &&
test_must_fail git apply --check C.diff' test_must_fail git apply --check C.diff'
test_expect_success \ test_expect_success \
'check incomplete binary diff with replacement -- should fail.' ' 'check incomplete binary diff with replacement -- should fail.' '
git-checkout master && git checkout master &&
test_must_fail git apply --check --allow-binary-replacement B.diff test_must_fail git apply --check --allow-binary-replacement B.diff
' '
test_expect_success \ test_expect_success \
'check incomplete binary diff with replacement (copy) -- should fail.' ' 'check incomplete binary diff with replacement (copy) -- should fail.' '
git-checkout master && git checkout master &&
test_must_fail git apply --check --allow-binary-replacement C.diff test_must_fail git apply --check --allow-binary-replacement C.diff
' '
test_expect_success 'check binary diff with replacement.' \ test_expect_success 'check binary diff with replacement.' \
'git-checkout master 'git checkout master
git apply --check --allow-binary-replacement BF.diff' git apply --check --allow-binary-replacement BF.diff'
test_expect_success 'check binary diff with replacement (copy).' \ test_expect_success 'check binary diff with replacement (copy).' \
'git-checkout master 'git checkout master
git apply --check --allow-binary-replacement CF.diff' git apply --check --allow-binary-replacement CF.diff'
# Now we start applying them. # Now we start applying them.
do_reset () { do_reset () {
rm -f file? && rm -f file? &&
git-reset --hard && git reset --hard &&
git-checkout -f master git checkout -f master
} }
test_expect_success 'apply binary diff -- should fail.' \ test_expect_success 'apply binary diff -- should fail.' \

View File

@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
test_description='core.whitespace rules and git-apply' test_description='core.whitespace rules and git apply'
. ./test-lib.sh . ./test-lib.sh

View File

@ -26,7 +26,7 @@ test_expect_success 'apply same filename with independent changes' '
git diff >> patch0 && git diff >> patch0 &&
cp same_fn same_fn2 && cp same_fn same_fn2 &&
git reset --hard && git reset --hard &&
git-apply patch0 && git apply patch0 &&
diff same_fn same_fn2 diff same_fn same_fn2
' '
@ -39,7 +39,7 @@ test_expect_success 'apply same filename with overlapping changes' '
git diff >> patch0 && git diff >> patch0 &&
cp same_fn same_fn2 && cp same_fn same_fn2 &&
git reset --hard && git reset --hard &&
git-apply patch0 && git apply patch0 &&
diff same_fn same_fn2 diff same_fn same_fn2
' '

View File

@ -164,7 +164,7 @@ test_expect_success 'am --keep really keeps the subject' '
git checkout HEAD^ && git checkout HEAD^ &&
git am --keep patch4 && git am --keep patch4 &&
! test -d .git/rebase-apply && ! test -d .git/rebase-apply &&
git-cat-file commit HEAD | git cat-file commit HEAD |
grep -q -F "Re: Re: Re: [PATCH 1/5 v2] third" grep -q -F "Re: Re: Re: [PATCH 1/5 v2] third"
' '

View File

@ -44,14 +44,14 @@ do
' '
test_expect_success "am$with3 --skip continue after failed am$with3" ' test_expect_success "am$with3 --skip continue after failed am$with3" '
test_must_fail git-am$with3 --skip >output && test_must_fail git am$with3 --skip >output &&
test "$(grep "^Applying" output)" = "Applying: 6" && test "$(grep "^Applying" output)" = "Applying: 6" &&
test_cmp file-2-expect file-2 && test_cmp file-2-expect file-2 &&
test ! -f .git/rr-cache/MERGE_RR test ! -f .git/rr-cache/MERGE_RR
' '
test_expect_success "am --abort goes back after failed am$with3" ' test_expect_success "am --abort goes back after failed am$with3" '
git-am --abort && git am --abort &&
git rev-parse HEAD >actual && git rev-parse HEAD >actual &&
git rev-parse initial >expect && git rev-parse initial >expect &&
test_cmp expect actual && test_cmp expect actual &&

View File

@ -3,7 +3,7 @@
# Copyright (c) 2005 Junio C Hamano # Copyright (c) 2005 Junio C Hamano
# #
test_description='git-pack-object test_description='git pack-object
' '
. ./test-lib.sh . ./test-lib.sh
@ -242,24 +242,24 @@ test_expect_success \
test_expect_success \ test_expect_success \
'build pack index for an existing pack' \ 'build pack index for an existing pack' \
'cat test-1-${packname_1}.pack >test-3.pack && 'cat test-1-${packname_1}.pack >test-3.pack &&
git-index-pack -o tmp.idx test-3.pack && git index-pack -o tmp.idx test-3.pack &&
cmp tmp.idx test-1-${packname_1}.idx && cmp tmp.idx test-1-${packname_1}.idx &&
git-index-pack test-3.pack && git index-pack test-3.pack &&
cmp test-3.idx test-1-${packname_1}.idx && cmp test-3.idx test-1-${packname_1}.idx &&
cat test-2-${packname_2}.pack >test-3.pack && cat test-2-${packname_2}.pack >test-3.pack &&
git-index-pack -o tmp.idx test-2-${packname_2}.pack && git index-pack -o tmp.idx test-2-${packname_2}.pack &&
cmp tmp.idx test-2-${packname_2}.idx && cmp tmp.idx test-2-${packname_2}.idx &&
git-index-pack test-3.pack && git index-pack test-3.pack &&
cmp test-3.idx test-2-${packname_2}.idx && cmp test-3.idx test-2-${packname_2}.idx &&
cat test-3-${packname_3}.pack >test-3.pack && cat test-3-${packname_3}.pack >test-3.pack &&
git-index-pack -o tmp.idx test-3-${packname_3}.pack && git index-pack -o tmp.idx test-3-${packname_3}.pack &&
cmp tmp.idx test-3-${packname_3}.idx && cmp tmp.idx test-3-${packname_3}.idx &&
git-index-pack test-3.pack && git index-pack test-3.pack &&
cmp test-3.idx test-3-${packname_3}.idx && cmp test-3.idx test-3-${packname_3}.idx &&
:' :'
@ -272,7 +272,7 @@ test_expect_success \
test_expect_success \ test_expect_success \
'make sure index-pack detects the SHA1 collision' \ 'make sure index-pack detects the SHA1 collision' \
'test_must_fail git-index-pack -o bad.idx test-3.pack' 'test_must_fail git index-pack -o bad.idx test-3.pack'
test_expect_success \ test_expect_success \
'honor pack.packSizeLimit' \ 'honor pack.packSizeLimit' \

View File

@ -19,7 +19,7 @@ test_expect_success \
tree=`git write-tree` && tree=`git write-tree` &&
commit1=`git commit-tree $tree </dev/null` && commit1=`git commit-tree $tree </dev/null` &&
git update-ref HEAD $commit1 && git update-ref HEAD $commit1 &&
git-repack -a -d && git repack -a -d &&
test "`git count-objects`" = "0 objects, 0 kilobytes" && test "`git count-objects`" = "0 objects, 0 kilobytes" &&
pack1=`ls .git/objects/pack/*.pack` && pack1=`ls .git/objects/pack/*.pack` &&
test -f "$pack1"' test -f "$pack1"'
@ -45,7 +45,7 @@ test_expect_success \
git config core.packedGitLimit 512 && git config core.packedGitLimit 512 &&
commit2=`git commit-tree $tree -p $commit1 </dev/null` && commit2=`git commit-tree $tree -p $commit1 </dev/null` &&
git update-ref HEAD $commit2 && git update-ref HEAD $commit2 &&
git-repack -a -d && git repack -a -d &&
test "`git count-objects`" = "0 objects, 0 kilobytes" && test "`git count-objects`" = "0 objects, 0 kilobytes" &&
pack2=`ls .git/objects/pack/*.pack` && pack2=`ls .git/objects/pack/*.pack` &&
test -f "$pack2" test -f "$pack2"

View File

@ -48,11 +48,11 @@ test_expect_success \
test_expect_success \ test_expect_success \
'index-pack with index version 1' \ 'index-pack with index version 1' \
'git-index-pack --index-version=1 -o 1.idx "test-1-${pack1}.pack"' 'git index-pack --index-version=1 -o 1.idx "test-1-${pack1}.pack"'
test_expect_success \ test_expect_success \
'index-pack with index version 2' \ 'index-pack with index version 2' \
'git-index-pack --index-version=2 -o 2.idx "test-1-${pack1}.pack"' 'git index-pack --index-version=2 -o 2.idx "test-1-${pack1}.pack"'
test_expect_success \ test_expect_success \
'index-pack results should match pack-objects ones' \ 'index-pack results should match pack-objects ones' \
@ -85,7 +85,7 @@ test_expect_success \
test "$have_64bits" && test "$have_64bits" &&
test_expect_success \ test_expect_success \
'index v2: force some 64-bit offsets with index-pack' \ 'index v2: force some 64-bit offsets with index-pack' \
'git-index-pack --index-version=2,0x40000 -o 3.idx "test-1-${pack1}.pack"' 'git index-pack --index-version=2,0x40000 -o 3.idx "test-1-${pack1}.pack"'
test "$have_64bits" && test "$have_64bits" &&
test_expect_success \ test_expect_success \
@ -94,7 +94,7 @@ test_expect_success \
test_expect_success \ test_expect_success \
'[index v1] 1) stream pack to repository' \ '[index v1] 1) stream pack to repository' \
'git-index-pack --index-version=1 --stdin < "test-1-${pack1}.pack" && 'git index-pack --index-version=1 --stdin < "test-1-${pack1}.pack" &&
git prune-packed && git prune-packed &&
git count-objects | ( read nr rest && test "$nr" -eq 1 ) && git count-objects | ( read nr rest && test "$nr" -eq 1 ) &&
cmp "test-1-${pack1}.pack" ".git/objects/pack/pack-${pack1}.pack" && cmp "test-1-${pack1}.pack" ".git/objects/pack/pack-${pack1}.pack" &&
@ -132,7 +132,7 @@ test_expect_success \
test_expect_success \ test_expect_success \
'[index v2] 1) stream pack to repository' \ '[index v2] 1) stream pack to repository' \
'rm -f .git/objects/pack/* && 'rm -f .git/objects/pack/* &&
git-index-pack --index-version=2 --stdin < "test-1-${pack1}.pack" && git index-pack --index-version=2 --stdin < "test-1-${pack1}.pack" &&
git prune-packed && git prune-packed &&
git count-objects | ( read nr rest && test "$nr" -eq 1 ) && git count-objects | ( read nr rest && test "$nr" -eq 1 ) &&
cmp "test-1-${pack1}.pack" ".git/objects/pack/pack-${pack1}.pack" && cmp "test-1-${pack1}.pack" ".git/objects/pack/pack-${pack1}.pack" &&
@ -165,7 +165,7 @@ test_expect_success \
test_expect_success \ test_expect_success \
'[index v2] 6) verify-pack detects CRC mismatch' \ '[index v2] 6) verify-pack detects CRC mismatch' \
'rm -f .git/objects/pack/* && 'rm -f .git/objects/pack/* &&
git-index-pack --index-version=2 --stdin < "test-1-${pack1}.pack" && git index-pack --index-version=2 --stdin < "test-1-${pack1}.pack" &&
git verify-pack ".git/objects/pack/pack-${pack1}.pack" && git verify-pack ".git/objects/pack/pack-${pack1}.pack" &&
chmod +w ".git/objects/pack/pack-${pack1}.idx" && chmod +w ".git/objects/pack/pack-${pack1}.idx" &&
dd if=/dev/zero of=".git/objects/pack/pack-${pack1}.idx" conv=notrunc \ dd if=/dev/zero of=".git/objects/pack/pack-${pack1}.idx" conv=notrunc \

View File

@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
test_description='git-pack-object --include-tag' test_description='git pack-object --include-tag'
. ./test-lib.sh . ./test-lib.sh
TRASH=`pwd` TRASH=`pwd`

View File

@ -31,7 +31,7 @@ test_expect_success setup '
parent=$commit || return 1 parent=$commit || return 1
done && done &&
git update-ref HEAD "$commit" && git update-ref HEAD "$commit" &&
git-clone ./. victim && git clone ./. victim &&
cd victim && cd victim &&
git log && git log &&
cd .. && cd .. &&
@ -68,7 +68,7 @@ test_expect_success 'pack the destination repository' '
test_expect_success \ test_expect_success \
'pushing rewound head should not barf but require --force' ' 'pushing rewound head should not barf but require --force' '
# should not fail but refuse to update. # should not fail but refuse to update.
if git-send-pack ./victim/.git/ master if git send-pack ./victim/.git/ master
then then
# now it should fail with Pasky patch # now it should fail with Pasky patch
echo >&2 Gaah, it should have failed. echo >&2 Gaah, it should have failed.
@ -85,7 +85,7 @@ test_expect_success \
true true
fi && fi &&
# this should update # this should update
git-send-pack --force ./victim/.git/ master && git send-pack --force ./victim/.git/ master &&
cmp victim/.git/refs/heads/master .git/refs/heads/master cmp victim/.git/refs/heads/master .git/refs/heads/master
' '
@ -95,7 +95,7 @@ test_expect_success \
git branch extra master && git branch extra master &&
cd .. && cd .. &&
test -f victim/.git/refs/heads/extra && test -f victim/.git/refs/heads/extra &&
git-send-pack ./victim/.git/ :extra master && git send-pack ./victim/.git/ :extra master &&
! test -f victim/.git/refs/heads/extra ! test -f victim/.git/refs/heads/extra
' '
@ -109,27 +109,27 @@ test_expect_success \
git config receive.denyNonFastforwards true && git config receive.denyNonFastforwards true &&
cd .. && cd .. &&
git update-ref refs/heads/master master^ || return 1 git update-ref refs/heads/master master^ || return 1
git-send-pack --force ./victim/.git/ master && return 1 git send-pack --force ./victim/.git/ master && return 1
! test_cmp .git/refs/heads/master victim/.git/refs/heads/master ! test_cmp .git/refs/heads/master victim/.git/refs/heads/master
' '
test_expect_success \ test_expect_success \
'pushing does not include non-head refs' ' 'pushing does not include non-head refs' '
mkdir parent && cd parent && mkdir parent && cd parent &&
git-init && touch file && git-add file && git-commit -m add && git init && touch file && git add file && git commit -m add &&
cd .. && cd .. &&
git-clone parent child && cd child && git-push --all && git clone parent child && cd child && git push --all &&
cd ../parent && cd ../parent &&
git-branch -a >branches && ! grep origin/master branches git branch -a >branches && ! grep origin/master branches
' '
rewound_push_setup() { rewound_push_setup() {
rm -rf parent child && rm -rf parent child &&
mkdir parent && cd parent && mkdir parent && cd parent &&
git-init && echo one >file && git-add file && git-commit -m one && git init && echo one >file && git add file && git commit -m one &&
echo two >file && git-commit -a -m two && echo two >file && git commit -a -m two &&
cd .. && cd .. &&
git-clone parent child && cd child && git-reset --hard HEAD^ git clone parent child && cd child && git reset --hard HEAD^
} }
rewound_push_succeeded() { rewound_push_succeeded() {
@ -148,26 +148,26 @@ rewound_push_failed() {
test_expect_success \ test_expect_success \
'pushing explicit refspecs respects forcing' ' 'pushing explicit refspecs respects forcing' '
rewound_push_setup && rewound_push_setup &&
if git-send-pack ../parent/.git refs/heads/master:refs/heads/master if git send-pack ../parent/.git refs/heads/master:refs/heads/master
then then
false false
else else
true true
fi && rewound_push_failed && fi && rewound_push_failed &&
git-send-pack ../parent/.git +refs/heads/master:refs/heads/master && git send-pack ../parent/.git +refs/heads/master:refs/heads/master &&
rewound_push_succeeded rewound_push_succeeded
' '
test_expect_success \ test_expect_success \
'pushing wildcard refspecs respects forcing' ' 'pushing wildcard refspecs respects forcing' '
rewound_push_setup && rewound_push_setup &&
if git-send-pack ../parent/.git refs/heads/*:refs/heads/* if git send-pack ../parent/.git refs/heads/*:refs/heads/*
then then
false false
else else
true true
fi && rewound_push_failed && fi && rewound_push_failed &&
git-send-pack ../parent/.git +refs/heads/*:refs/heads/* && git send-pack ../parent/.git +refs/heads/*:refs/heads/* &&
rewound_push_succeeded rewound_push_succeeded
' '

View File

@ -17,7 +17,7 @@ test_expect_success setup '
commit1=$(echo modify | git commit-tree $tree1 -p $commit0) && commit1=$(echo modify | git commit-tree $tree1 -p $commit0) &&
git update-ref refs/heads/master $commit0 && git update-ref refs/heads/master $commit0 &&
git update-ref refs/heads/tofail $commit1 && git update-ref refs/heads/tofail $commit1 &&
git-clone ./. victim && git clone ./. victim &&
GIT_DIR=victim/.git git update-ref refs/heads/tofail $commit1 && GIT_DIR=victim/.git git update-ref refs/heads/tofail $commit1 &&
git update-ref refs/heads/master $commit1 && git update-ref refs/heads/master $commit1 &&
git update-ref refs/heads/tofail $commit0 git update-ref refs/heads/tofail $commit0
@ -61,7 +61,7 @@ EOF
chmod u+x victim/.git/hooks/post-update chmod u+x victim/.git/hooks/post-update
test_expect_success push ' test_expect_success push '
test_must_fail git-send-pack --force ./victim/.git \ test_must_fail git send-pack --force ./victim/.git \
master tofail >send.out 2>send.err master tofail >send.out 2>send.err
' '

View File

@ -16,9 +16,9 @@ test_expect_success setup '
tree1=$(git write-tree) && tree1=$(git write-tree) &&
commit1=$(echo modify | git commit-tree $tree1 -p $commit0) && commit1=$(echo modify | git commit-tree $tree1 -p $commit0) &&
git update-ref refs/heads/master $commit0 && git update-ref refs/heads/master $commit0 &&
git-clone ./. clone1 && git clone ./. clone1 &&
GIT_DIR=clone1/.git git update-index --add a && GIT_DIR=clone1/.git git update-index --add a &&
git-clone ./. clone2 && git clone ./. clone2 &&
GIT_DIR=clone2/.git git update-index --add a GIT_DIR=clone2/.git git update-index --add a
' '

View File

@ -14,8 +14,8 @@ test_expect_success setup '
tree0=$(git write-tree) && tree0=$(git write-tree) &&
commit0=$(echo setup | git commit-tree $tree0) && commit0=$(echo setup | git commit-tree $tree0) &&
git update-ref refs/heads/master $commit0 && git update-ref refs/heads/master $commit0 &&
git-clone ./. clone1 && git clone ./. clone1 &&
git-clone ./. clone2 && git clone ./. clone2 &&
GIT_DIR=clone2/.git git branch -a new2 && GIT_DIR=clone2/.git git branch -a new2 &&
echo Data for commit1. >clone2/b && echo Data for commit1. >clone2/b &&
GIT_DIR=clone2/.git git add clone2/b && GIT_DIR=clone2/.git git add clone2/b &&

View File

@ -58,7 +58,7 @@ pull_to_client () {
cd client cd client
test_expect_success "$number pull" \ test_expect_success "$number pull" \
"git-fetch-pack -k -v .. $heads" "git fetch-pack -k -v .. $heads"
case "$heads" in *A*) echo $ATIP > .git/refs/heads/A;; esac case "$heads" in *A*) echo $ATIP > .git/refs/heads/A;; esac
case "$heads" in *B*) echo $BTIP > .git/refs/heads/B;; esac case "$heads" in *B*) echo $BTIP > .git/refs/heads/B;; esac
git symbolic-ref HEAD refs/heads/`echo $heads | sed -e 's/^\(.\).*$/\1/'` git symbolic-ref HEAD refs/heads/`echo $heads | sed -e 's/^\(.\).*$/\1/'`
@ -129,7 +129,7 @@ pull_to_client 2nd "B" $((64*3))
pull_to_client 3rd "A" $((1*3)) # old fails pull_to_client 3rd "A" $((1*3)) # old fails
test_expect_success "clone shallow" 'git-clone --depth 2 "file://$(pwd)/." shallow' test_expect_success "clone shallow" 'git clone --depth 2 "file://$(pwd)/." shallow'
(cd shallow; git count-objects -v) > count.shallow (cd shallow; git count-objects -v) > count.shallow

View File

@ -111,7 +111,7 @@ test_expect_success 'fetch must not resolve short tag name' '
test_expect_success 'fetch must not resolve short remote name' ' test_expect_success 'fetch must not resolve short remote name' '
cd "$D" && cd "$D" &&
git-update-ref refs/remotes/six/HEAD HEAD git update-ref refs/remotes/six/HEAD HEAD
mkdir six && mkdir six &&
cd six && cd six &&

View File

@ -34,7 +34,7 @@ test_expect_success 'upload-pack fails due to error in pack-objects' '
! echo "0032want $(git rev-parse HEAD) ! echo "0032want $(git rev-parse HEAD)
00000009done 00000009done
0000" | git-upload-pack . > /dev/null 2> output.err && 0000" | git upload-pack . > /dev/null 2> output.err &&
grep "pack-objects died" output.err grep "pack-objects died" output.err
' '
@ -52,7 +52,7 @@ test_expect_success 'upload-pack fails due to error in rev-list' '
! echo "0032want $(git rev-parse HEAD) ! echo "0032want $(git rev-parse HEAD)
00000009done 00000009done
0000" | git-upload-pack . > /dev/null 2> output.err && 0000" | git upload-pack . > /dev/null 2> output.err &&
grep "waitpid (async) failed" output.err grep "waitpid (async) failed" output.err
' '

View File

@ -3,9 +3,9 @@
# Copyright (C) 2006 Carl D. Worth <cworth@cworth.org> # Copyright (C) 2006 Carl D. Worth <cworth@cworth.org>
# #
test_description='test git-clone to cleanup after failure test_description='test git clone to cleanup after failure
This test covers the fact that if git-clone fails, it should remove This test covers the fact that if git clone fails, it should remove
the directory it created, to avoid the user having to manually the directory it created, to avoid the user having to manually
remove the directory before attempting a clone again.' remove the directory before attempting a clone again.'
@ -13,7 +13,7 @@ remove the directory before attempting a clone again.'
test_expect_success \ test_expect_success \
'clone of non-existent source should fail' \ 'clone of non-existent source should fail' \
'test_must_fail git-clone foo bar' 'test_must_fail git clone foo bar'
test_expect_success \ test_expect_success \
'failed clone should not leave a directory' \ 'failed clone should not leave a directory' \
@ -25,15 +25,15 @@ test_create_repo foo
# clone doesn't like it if there is no HEAD. Is that a bug? # clone doesn't like it if there is no HEAD. Is that a bug?
(cd foo && touch file && git add file && git commit -m 'add file' >/dev/null 2>&1) (cd foo && touch file && git add file && git commit -m 'add file' >/dev/null 2>&1)
# source repository given to git-clone should be relative to the # source repository given to git clone should be relative to the
# current path not to the target dir # current path not to the target dir
test_expect_success \ test_expect_success \
'clone of non-existent (relative to $PWD) source should fail' \ 'clone of non-existent (relative to $PWD) source should fail' \
'test_must_fail git-clone ../foo baz' 'test_must_fail git clone ../foo baz'
test_expect_success \ test_expect_success \
'clone should work now that source exists' \ 'clone should work now that source exists' \
'git-clone foo bar' 'git clone foo bar'
test_expect_success \ test_expect_success \
'successful clone must leave the directory' \ 'successful clone must leave the directory' \

View File

@ -107,4 +107,22 @@ test_expect_success 'clone --mirror does not repeat tags' '
' '
test_expect_success 'clone to destination with trailing /' '
git clone src target-1/ &&
T=$( cd target-1 && git rev-parse HEAD ) &&
S=$( cd src && git rev-parse HEAD ) &&
test "$T" = "$S"
'
test_expect_success 'clone to destination with extra trailing /' '
git clone src target-2/// &&
T=$( cd target-2 && git rev-parse HEAD ) &&
S=$( cd src && git rev-parse HEAD ) &&
test "$T" = "$S"
'
test_done test_done

View File

@ -11,13 +11,13 @@ test_expect_success setup '
chmod +x not_ssh chmod +x not_ssh
' '
test_expect_success 'clone calls git-upload-pack unqualified with no -u option' ' test_expect_success 'clone calls git upload-pack unqualified with no -u option' '
GIT_SSH=./not_ssh git clone localhost:/path/to/repo junk GIT_SSH=./not_ssh git clone localhost:/path/to/repo junk
echo "localhost git-upload-pack '\''/path/to/repo'\''" >expected echo "localhost git-upload-pack '\''/path/to/repo'\''" >expected
test_cmp expected not_ssh_output test_cmp expected not_ssh_output
' '
test_expect_success 'clone calls specified git-upload-pack with -u option' ' test_expect_success 'clone calls specified git upload-pack with -u option' '
GIT_SSH=./not_ssh git clone -u /something/bin/git-upload-pack localhost:/path/to/repo junk GIT_SSH=./not_ssh git clone -u /something/bin/git-upload-pack localhost:/path/to/repo junk
echo "localhost /something/bin/git-upload-pack '\''/path/to/repo'\''" >expected echo "localhost /something/bin/git-upload-pack '\''/path/to/repo'\''" >expected
test_cmp expected not_ssh_output test_cmp expected not_ssh_output

View File

@ -6,8 +6,8 @@ test_description='git rev-list --pretty=format test'
test_tick test_tick
test_expect_success 'setup' ' test_expect_success 'setup' '
touch foo && git add foo && git-commit -m "added foo" && touch foo && git add foo && git commit -m "added foo" &&
echo changed >foo && git-commit -a -m "changed foo" echo changed >foo && git commit -a -m "changed foo"
' '
# usage: test_format name format_string <expected_output # usage: test_format name format_string <expected_output
@ -110,7 +110,7 @@ include an iso8859 character: ¡bueno!
EOF EOF
test_expect_success 'setup complex body' ' test_expect_success 'setup complex body' '
git config i18n.commitencoding iso8859-1 && git config i18n.commitencoding iso8859-1 &&
echo change2 >foo && git-commit -a -F commit-msg echo change2 >foo && git commit -a -F commit-msg
' '
test_format complex-encoding %e <<'EOF' test_format complex-encoding %e <<'EOF'

View File

@ -5,7 +5,7 @@
test_description='merging symlinks on filesystem w/o symlink support. test_description='merging symlinks on filesystem w/o symlink support.
This tests that git-merge-recursive writes merge results as plain files This tests that git merge-recursive writes merge results as plain files
if core.symlinks is false.' if core.symlinks is false.'
. ./test-lib.sh . ./test-lib.sh
@ -15,25 +15,25 @@ test_expect_success \
git config core.symlinks false && git config core.symlinks false &&
> file && > file &&
git add file && git add file &&
git-commit -m initial && git commit -m initial &&
git branch b-symlink && git branch b-symlink &&
git branch b-file && git branch b-file &&
l=$(echo -n file | git-hash-object -t blob -w --stdin) && l=$(echo -n file | git hash-object -t blob -w --stdin) &&
echo "120000 $l symlink" | git update-index --index-info && echo "120000 $l symlink" | git update-index --index-info &&
git-commit -m master && git commit -m master &&
git-checkout b-symlink && git checkout b-symlink &&
l=$(echo -n file-different | git-hash-object -t blob -w --stdin) && l=$(echo -n file-different | git hash-object -t blob -w --stdin) &&
echo "120000 $l symlink" | git update-index --index-info && echo "120000 $l symlink" | git update-index --index-info &&
git-commit -m b-symlink && git commit -m b-symlink &&
git-checkout b-file && git checkout b-file &&
echo plain-file > symlink && echo plain-file > symlink &&
git add symlink && git add symlink &&
git-commit -m b-file' git commit -m b-file'
test_expect_success \ test_expect_success \
'merge master into b-symlink, which has a different symbolic link' ' 'merge master into b-symlink, which has a different symbolic link' '
git-checkout b-symlink && git checkout b-symlink &&
test_must_fail git-merge master' test_must_fail git merge master'
test_expect_success \ test_expect_success \
'the merge result must be a file' ' 'the merge result must be a file' '
@ -41,8 +41,8 @@ test -f symlink'
test_expect_success \ test_expect_success \
'merge master into b-file, which has a file instead of a symbolic link' ' 'merge master into b-file, which has a file instead of a symbolic link' '
git-reset --hard && git-checkout b-file && git reset --hard && git checkout b-file &&
test_must_fail git-merge master' test_must_fail git merge master'
test_expect_success \ test_expect_success \
'the merge result must be a file' ' 'the merge result must be a file' '
@ -50,9 +50,9 @@ test -f symlink'
test_expect_success \ test_expect_success \
'merge b-file, which has a file instead of a symbolic link, into master' ' 'merge b-file, which has a file instead of a symbolic link, into master' '
git-reset --hard && git reset --hard &&
git-checkout master && git checkout master &&
test_must_fail git-merge b-file' test_must_fail git merge b-file'
test_expect_success \ test_expect_success \
'the merge result must be a file' ' 'the merge result must be a file' '

View File

@ -106,9 +106,9 @@ test_expect_success 'custom merge backend' '
cmp binary union && cmp binary union &&
sed -e 1,3d text >check-1 && sed -e 1,3d text >check-1 &&
o=$(git-unpack-file master^:text) && o=$(git unpack-file master^:text) &&
a=$(git-unpack-file side^:text) && a=$(git unpack-file side^:text) &&
b=$(git-unpack-file master:text) && b=$(git unpack-file master:text) &&
sh -c "./custom-merge $o $a $b 0" && sh -c "./custom-merge $o $a $b 0" &&
sed -e 1,3d $a >check-2 && sed -e 1,3d $a >check-2 &&
cmp check-1 check-2 && cmp check-1 check-2 &&
@ -133,9 +133,9 @@ test_expect_success 'custom merge backend' '
cmp binary union && cmp binary union &&
sed -e 1,3d text >check-1 && sed -e 1,3d text >check-1 &&
o=$(git-unpack-file master^:text) && o=$(git unpack-file master^:text) &&
a=$(git-unpack-file anchor:text) && a=$(git unpack-file anchor:text) &&
b=$(git-unpack-file master:text) && b=$(git unpack-file master:text) &&
sh -c "./custom-merge $o $a $b 0" && sh -c "./custom-merge $o $a $b 0" &&
sed -e 1,3d $a >check-2 && sed -e 1,3d $a >check-2 &&
cmp check-1 check-2 && cmp check-1 check-2 &&

View File

@ -2,7 +2,7 @@
# #
# Copyright (c) 2007 Christian Couder # Copyright (c) 2007 Christian Couder
# #
test_description='Tests git-bisect functionality' test_description='Tests git bisect functionality'
exec </dev/null exec </dev/null
@ -23,7 +23,7 @@ add_line_into_file()
fi fi
test_tick test_tick
git-commit --quiet -m "$MSG" $_file git commit --quiet -m "$MSG" $_file
} }
HASH1= HASH1=

View File

@ -31,57 +31,57 @@ check_describe () {
test_expect_success setup ' test_expect_success setup '
test_tick && test_tick &&
echo one >file && git add file && git-commit -m initial && echo one >file && git add file && git commit -m initial &&
one=$(git rev-parse HEAD) && one=$(git rev-parse HEAD) &&
test_tick && test_tick &&
echo two >file && git add file && git-commit -m second && echo two >file && git add file && git commit -m second &&
two=$(git rev-parse HEAD) && two=$(git rev-parse HEAD) &&
test_tick && test_tick &&
echo three >file && git add file && git-commit -m third && echo three >file && git add file && git commit -m third &&
test_tick && test_tick &&
echo A >file && git add file && git-commit -m A && echo A >file && git add file && git commit -m A &&
test_tick && test_tick &&
git-tag -a -m A A && git tag -a -m A A &&
test_tick && test_tick &&
echo c >file && git add file && git-commit -m c && echo c >file && git add file && git commit -m c &&
test_tick && test_tick &&
git-tag c && git tag c &&
git reset --hard $two && git reset --hard $two &&
test_tick && test_tick &&
echo B >side && git add side && git-commit -m B && echo B >side && git add side && git commit -m B &&
test_tick && test_tick &&
git-tag -a -m B B && git tag -a -m B B &&
test_tick && test_tick &&
git-merge -m Merged c && git merge -m Merged c &&
merged=$(git rev-parse HEAD) && merged=$(git rev-parse HEAD) &&
git reset --hard $two && git reset --hard $two &&
test_tick && test_tick &&
echo D >another && git add another && git-commit -m D && echo D >another && git add another && git commit -m D &&
test_tick && test_tick &&
git-tag -a -m D D && git tag -a -m D D &&
test_tick && test_tick &&
echo DD >another && git commit -a -m another && echo DD >another && git commit -a -m another &&
test_tick && test_tick &&
git-tag e && git tag e &&
test_tick && test_tick &&
echo DDD >another && git commit -a -m "yet another" && echo DDD >another && git commit -a -m "yet another" &&
test_tick && test_tick &&
git-merge -m Merged $merged && git merge -m Merged $merged &&
test_tick && test_tick &&
echo X >file && echo X >side && git add file side && echo X >file && echo X >side && git add file side &&
git-commit -m x git commit -m x
' '

View File

@ -97,27 +97,27 @@ test_atom tag contents 'Tagging at 1151939927
' '
test_expect_success 'Check invalid atoms names are errors' ' test_expect_success 'Check invalid atoms names are errors' '
test_must_fail git-for-each-ref --format="%(INVALID)" refs/heads test_must_fail git for-each-ref --format="%(INVALID)" refs/heads
' '
test_expect_success 'Check format specifiers are ignored in naming date atoms' ' test_expect_success 'Check format specifiers are ignored in naming date atoms' '
git-for-each-ref --format="%(authordate)" refs/heads && git for-each-ref --format="%(authordate)" refs/heads &&
git-for-each-ref --format="%(authordate:default) %(authordate)" refs/heads && git for-each-ref --format="%(authordate:default) %(authordate)" refs/heads &&
git-for-each-ref --format="%(authordate) %(authordate:default)" refs/heads && git for-each-ref --format="%(authordate) %(authordate:default)" refs/heads &&
git-for-each-ref --format="%(authordate:default) %(authordate:default)" refs/heads git for-each-ref --format="%(authordate:default) %(authordate:default)" refs/heads
' '
test_expect_success 'Check valid format specifiers for date fields' ' test_expect_success 'Check valid format specifiers for date fields' '
git-for-each-ref --format="%(authordate:default)" refs/heads && git for-each-ref --format="%(authordate:default)" refs/heads &&
git-for-each-ref --format="%(authordate:relative)" refs/heads && git for-each-ref --format="%(authordate:relative)" refs/heads &&
git-for-each-ref --format="%(authordate:short)" refs/heads && git for-each-ref --format="%(authordate:short)" refs/heads &&
git-for-each-ref --format="%(authordate:local)" refs/heads && git for-each-ref --format="%(authordate:local)" refs/heads &&
git-for-each-ref --format="%(authordate:iso8601)" refs/heads && git for-each-ref --format="%(authordate:iso8601)" refs/heads &&
git-for-each-ref --format="%(authordate:rfc2822)" refs/heads git for-each-ref --format="%(authordate:rfc2822)" refs/heads
' '
test_expect_success 'Check invalid format specifiers are errors' ' test_expect_success 'Check invalid format specifiers are errors' '
test_must_fail git-for-each-ref --format="%(authordate:INVALID)" refs/heads test_must_fail git for-each-ref --format="%(authordate:INVALID)" refs/heads
' '
cat >expected <<\EOF cat >expected <<\EOF
@ -207,7 +207,7 @@ refs/tags/testtag
EOF EOF
test_expect_success 'Verify ascending sort' ' test_expect_success 'Verify ascending sort' '
git-for-each-ref --format="%(refname)" --sort=refname >actual && git for-each-ref --format="%(refname)" --sort=refname >actual &&
test_cmp expected actual test_cmp expected actual
' '
@ -218,7 +218,7 @@ refs/heads/master
EOF EOF
test_expect_success 'Verify descending sort' ' test_expect_success 'Verify descending sort' '
git-for-each-ref --format="%(refname)" --sort=-refname >actual && git for-each-ref --format="%(refname)" --sort=-refname >actual &&
test_cmp expected actual test_cmp expected actual
' '

View File

@ -8,7 +8,7 @@ test_expect_success \
'mkdir path0 path1 && 'mkdir path0 path1 &&
cp "$TEST_DIRECTORY"/../COPYING path0/COPYING && cp "$TEST_DIRECTORY"/../COPYING path0/COPYING &&
git add path0/COPYING && git add path0/COPYING &&
git-commit -m add -a' git commit -m add -a'
test_expect_success \ test_expect_success \
'moving the file out of subdirectory' \ 'moving the file out of subdirectory' \
@ -17,7 +17,7 @@ test_expect_success \
# in path0 currently # in path0 currently
test_expect_success \ test_expect_success \
'commiting the change' \ 'commiting the change' \
'cd .. && git-commit -m move-out -a' 'cd .. && git commit -m move-out -a'
test_expect_success \ test_expect_success \
'checking the commit' \ 'checking the commit' \
@ -31,7 +31,7 @@ test_expect_success \
# in path0 currently # in path0 currently
test_expect_success \ test_expect_success \
'commiting the change' \ 'commiting the change' \
'cd .. && git-commit -m move-in -a' 'cd .. && git commit -m move-in -a'
test_expect_success \ test_expect_success \
'checking the commit' \ 'checking the commit' \
@ -42,7 +42,7 @@ test_expect_success \
'adding another file' \ 'adding another file' \
'cp "$TEST_DIRECTORY"/../README path0/README && 'cp "$TEST_DIRECTORY"/../README path0/README &&
git add path0/README && git add path0/README &&
git-commit -m add2 -a' git commit -m add2 -a'
test_expect_success \ test_expect_success \
'moving whole subdirectory' \ 'moving whole subdirectory' \
@ -50,7 +50,7 @@ test_expect_success \
test_expect_success \ test_expect_success \
'commiting the change' \ 'commiting the change' \
'git-commit -m dir-move -a' 'git commit -m dir-move -a'
test_expect_success \ test_expect_success \
'checking the commit' \ 'checking the commit' \
@ -69,7 +69,7 @@ test_expect_success \
test_expect_success \ test_expect_success \
'commiting the change' \ 'commiting the change' \
'git-commit -m dir-move -a' 'git commit -m dir-move -a'
test_expect_success \ test_expect_success \
'checking the commit' \ 'checking the commit' \

View File

@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
test_description='git-filter-branch' test_description='git filter-branch'
. ./test-lib.sh . ./test-lib.sh
make_commit () { make_commit () {
@ -32,14 +32,14 @@ test_expect_success 'setup' '
H=$(git rev-parse H) H=$(git rev-parse H)
test_expect_success 'rewrite identically' ' test_expect_success 'rewrite identically' '
git-filter-branch branch git filter-branch branch
' '
test_expect_success 'result is really identical' ' test_expect_success 'result is really identical' '
test $H = $(git rev-parse HEAD) test $H = $(git rev-parse HEAD)
' '
test_expect_success 'rewrite bare repository identically' ' test_expect_success 'rewrite bare repository identically' '
(git config core.bare true && cd .git && git-filter-branch branch) (git config core.bare true && cd .git && git filter-branch branch)
' '
git config core.bare false git config core.bare false
test_expect_success 'result is really identical' ' test_expect_success 'result is really identical' '
@ -47,7 +47,7 @@ test_expect_success 'result is really identical' '
' '
test_expect_success 'rewrite, renaming a specific file' ' test_expect_success 'rewrite, renaming a specific file' '
git-filter-branch -f --tree-filter "mv d doh || :" HEAD git filter-branch -f --tree-filter "mv d doh || :" HEAD
' '
test_expect_success 'test that the file was renamed' ' test_expect_success 'test that the file was renamed' '
@ -58,7 +58,7 @@ test_expect_success 'test that the file was renamed' '
' '
test_expect_success 'rewrite, renaming a specific directory' ' test_expect_success 'rewrite, renaming a specific directory' '
git-filter-branch -f --tree-filter "mv dir diroh || :" HEAD git filter-branch -f --tree-filter "mv dir diroh || :" HEAD
' '
test_expect_success 'test that the directory was renamed' ' test_expect_success 'test that the directory was renamed' '
@ -73,7 +73,7 @@ test_expect_success 'test that the directory was renamed' '
git tag oldD HEAD~4 git tag oldD HEAD~4
test_expect_success 'rewrite one branch, keeping a side branch' ' test_expect_success 'rewrite one branch, keeping a side branch' '
git branch modD oldD && git branch modD oldD &&
git-filter-branch -f --tree-filter "mv b boh || :" D..modD git filter-branch -f --tree-filter "mv b boh || :" D..modD
' '
test_expect_success 'common ancestor is still common (unchanged)' ' test_expect_success 'common ancestor is still common (unchanged)' '
@ -97,7 +97,7 @@ test_expect_success 'filter subdirectory only' '
git commit -m "again not subdir" && git commit -m "again not subdir" &&
git branch sub && git branch sub &&
git branch sub-earlier HEAD~2 && git branch sub-earlier HEAD~2 &&
git-filter-branch -f --subdirectory-filter subdir \ git filter-branch -f --subdirectory-filter subdir \
refs/heads/sub refs/heads/sub-earlier refs/heads/sub refs/heads/sub-earlier
' '
@ -124,7 +124,7 @@ test_expect_success 'more setup' '
test_expect_success 'use index-filter to move into a subdirectory' ' test_expect_success 'use index-filter to move into a subdirectory' '
git branch directorymoved && git branch directorymoved &&
git-filter-branch -f --index-filter \ git filter-branch -f --index-filter \
"git ls-files -s | sed \"s-\\t-&newsubdir/-\" | "git ls-files -s | sed \"s-\\t-&newsubdir/-\" |
GIT_INDEX_FILE=\$GIT_INDEX_FILE.new \ GIT_INDEX_FILE=\$GIT_INDEX_FILE.new \
git update-index --index-info && git update-index --index-info &&
@ -133,7 +133,7 @@ test_expect_success 'use index-filter to move into a subdirectory' '
test_expect_success 'stops when msg filter fails' ' test_expect_success 'stops when msg filter fails' '
old=$(git rev-parse HEAD) && old=$(git rev-parse HEAD) &&
test_must_fail git-filter-branch -f --msg-filter false HEAD && test_must_fail git filter-branch -f --msg-filter false HEAD &&
test $old = $(git rev-parse HEAD) && test $old = $(git rev-parse HEAD) &&
rm -rf .git-rewrite rm -rf .git-rewrite
' '
@ -144,7 +144,7 @@ test_expect_success 'author information is preserved' '
test_tick && test_tick &&
GIT_AUTHOR_NAME="B V Uips" git commit -m bvuips && GIT_AUTHOR_NAME="B V Uips" git commit -m bvuips &&
git branch preserved-author && git branch preserved-author &&
git-filter-branch -f --msg-filter "cat; \ git filter-branch -f --msg-filter "cat; \
test \$GIT_COMMIT != $(git rev-parse master) || \ test \$GIT_COMMIT != $(git rev-parse master) || \
echo Hallo" \ echo Hallo" \
preserved-author && preserved-author &&
@ -156,7 +156,7 @@ test_expect_success "remove a certain author's commits" '
test_tick && test_tick &&
git commit -m i i && git commit -m i i &&
git branch removed-author && git branch removed-author &&
git-filter-branch -f --commit-filter "\ git filter-branch -f --commit-filter "\
if [ \"\$GIT_AUTHOR_NAME\" = \"B V Uips\" ];\ if [ \"\$GIT_AUTHOR_NAME\" = \"B V Uips\" ];\
then\ then\
skip_commit \"\$@\"; skip_commit \"\$@\";

View File

@ -3,7 +3,7 @@
# Copyright (c) 2007 Carlos Rica # Copyright (c) 2007 Carlos Rica
# #
test_description='git-tag test_description='git tag
Tests for operations with tags.' Tests for operations with tags.'
@ -22,25 +22,25 @@ test_expect_success 'listing all tags in an empty tree should succeed' '
' '
test_expect_success 'listing all tags in an empty tree should output nothing' ' test_expect_success 'listing all tags in an empty tree should output nothing' '
test `git-tag -l | wc -l` -eq 0 && test `git tag -l | wc -l` -eq 0 &&
test `git-tag | wc -l` -eq 0 test `git tag | wc -l` -eq 0
' '
test_expect_success 'looking for a tag in an empty tree should fail' \ test_expect_success 'looking for a tag in an empty tree should fail' \
'! (tag_exists mytag)' '! (tag_exists mytag)'
test_expect_success 'creating a tag in an empty tree should fail' ' test_expect_success 'creating a tag in an empty tree should fail' '
test_must_fail git-tag mynotag && test_must_fail git tag mynotag &&
! tag_exists mynotag ! tag_exists mynotag
' '
test_expect_success 'creating a tag for HEAD in an empty tree should fail' ' test_expect_success 'creating a tag for HEAD in an empty tree should fail' '
test_must_fail git-tag mytaghead HEAD && test_must_fail git tag mytaghead HEAD &&
! tag_exists mytaghead ! tag_exists mytaghead
' '
test_expect_success 'creating a tag for an unknown revision should fail' ' test_expect_success 'creating a tag for an unknown revision should fail' '
test_must_fail git-tag mytagnorev aaaaaaaaaaa && test_must_fail git tag mytagnorev aaaaaaaaaaa &&
! tag_exists mytagnorev ! tag_exists mytagnorev
' '
@ -54,32 +54,32 @@ test_expect_success 'creating a tag using default HEAD should succeed' '
' '
test_expect_success 'listing all tags if one exists should succeed' ' test_expect_success 'listing all tags if one exists should succeed' '
git-tag -l && git tag -l &&
git-tag git tag
' '
test_expect_success 'listing all tags if one exists should output that tag' ' test_expect_success 'listing all tags if one exists should output that tag' '
test `git-tag -l` = mytag && test `git tag -l` = mytag &&
test `git-tag` = mytag test `git tag` = mytag
' '
# pattern matching: # pattern matching:
test_expect_success 'listing a tag using a matching pattern should succeed' \ test_expect_success 'listing a tag using a matching pattern should succeed' \
'git-tag -l mytag' 'git tag -l mytag'
test_expect_success \ test_expect_success \
'listing a tag using a matching pattern should output that tag' \ 'listing a tag using a matching pattern should output that tag' \
'test `git-tag -l mytag` = mytag' 'test `git tag -l mytag` = mytag'
# todo: git tag -l now returns always zero, when fixed, change this test # todo: git tag -l now returns always zero, when fixed, change this test
test_expect_success \ test_expect_success \
'listing tags using a non-matching pattern should suceed' \ 'listing tags using a non-matching pattern should suceed' \
'git-tag -l xxx' 'git tag -l xxx'
test_expect_success \ test_expect_success \
'listing tags using a non-matching pattern should output nothing' \ 'listing tags using a non-matching pattern should output nothing' \
'test `git-tag -l xxx | wc -l` -eq 0' 'test `git tag -l xxx | wc -l` -eq 0'
# special cases for creating tags: # special cases for creating tags:
@ -89,13 +89,13 @@ test_expect_success \
test_expect_success \ test_expect_success \
'trying to create a tag with a non-valid name should fail' ' 'trying to create a tag with a non-valid name should fail' '
test `git-tag -l | wc -l` -eq 1 && test `git tag -l | wc -l` -eq 1 &&
test_must_fail git tag "" && test_must_fail git tag "" &&
test_must_fail git tag .othertag && test_must_fail git tag .othertag &&
test_must_fail git tag "other tag" && test_must_fail git tag "other tag" &&
test_must_fail git tag "othertag^" && test_must_fail git tag "othertag^" &&
test_must_fail git tag "other~tag" && test_must_fail git tag "other~tag" &&
test `git-tag -l | wc -l` -eq 1 test `git tag -l | wc -l` -eq 1
' '
test_expect_success 'creating a tag using HEAD directly should succeed' ' test_expect_success 'creating a tag using HEAD directly should succeed' '
@ -107,7 +107,7 @@ test_expect_success 'creating a tag using HEAD directly should succeed' '
test_expect_success 'trying to delete an unknown tag should fail' ' test_expect_success 'trying to delete an unknown tag should fail' '
! tag_exists unknown-tag && ! tag_exists unknown-tag &&
test_must_fail git-tag -d unknown-tag test_must_fail git tag -d unknown-tag
' '
cat >expect <<EOF cat >expect <<EOF
@ -117,7 +117,7 @@ EOF
test_expect_success \ test_expect_success \
'trying to delete tags without params should succeed and do nothing' ' 'trying to delete tags without params should succeed and do nothing' '
git tag -l > actual && test_cmp expect actual && git tag -l > actual && test_cmp expect actual &&
git-tag -d && git tag -d &&
git tag -l > actual && test_cmp expect actual git tag -l > actual && test_cmp expect actual
' '
@ -125,7 +125,7 @@ test_expect_success \
'deleting two existing tags in one command should succeed' ' 'deleting two existing tags in one command should succeed' '
tag_exists mytag && tag_exists mytag &&
tag_exists myhead && tag_exists myhead &&
git-tag -d mytag myhead && git tag -d mytag myhead &&
! tag_exists mytag && ! tag_exists mytag &&
! tag_exists myhead ! tag_exists myhead
' '
@ -133,7 +133,7 @@ test_expect_success \
test_expect_success \ test_expect_success \
'creating a tag with the name of another deleted one should succeed' ' 'creating a tag with the name of another deleted one should succeed' '
! tag_exists mytag && ! tag_exists mytag &&
git-tag mytag && git tag mytag &&
tag_exists mytag tag_exists mytag
' '
@ -141,13 +141,13 @@ test_expect_success \
'trying to delete two tags, existing and not, should fail in the 2nd' ' 'trying to delete two tags, existing and not, should fail in the 2nd' '
tag_exists mytag && tag_exists mytag &&
! tag_exists myhead && ! tag_exists myhead &&
test_must_fail git-tag -d mytag anothertag && test_must_fail git tag -d mytag anothertag &&
! tag_exists mytag && ! tag_exists mytag &&
! tag_exists myhead ! tag_exists myhead
' '
test_expect_success 'trying to delete an already deleted tag should fail' \ test_expect_success 'trying to delete an already deleted tag should fail' \
'test_must_fail git-tag -d mytag' 'test_must_fail git tag -d mytag'
# listing various tags with pattern matching: # listing various tags with pattern matching:
@ -185,7 +185,7 @@ cba
EOF EOF
test_expect_success \ test_expect_success \
'listing tags with substring as pattern must print those matching' ' 'listing tags with substring as pattern must print those matching' '
git-tag -l "*a*" > actual && git tag -l "*a*" > actual &&
test_cmp expect actual test_cmp expect actual
' '
@ -195,7 +195,7 @@ v1.0.1
EOF EOF
test_expect_success \ test_expect_success \
'listing tags with a suffix as pattern must print those matching' ' 'listing tags with a suffix as pattern must print those matching' '
git-tag -l "*.1" > actual && git tag -l "*.1" > actual &&
test_cmp expect actual test_cmp expect actual
' '
@ -205,7 +205,7 @@ t211
EOF EOF
test_expect_success \ test_expect_success \
'listing tags with a prefix as pattern must print those matching' ' 'listing tags with a prefix as pattern must print those matching' '
git-tag -l "t21*" > actual && git tag -l "t21*" > actual &&
test_cmp expect actual test_cmp expect actual
' '
@ -214,7 +214,7 @@ a1
EOF EOF
test_expect_success \ test_expect_success \
'listing tags using a name as pattern must print that one matching' ' 'listing tags using a name as pattern must print that one matching' '
git-tag -l a1 > actual && git tag -l a1 > actual &&
test_cmp expect actual test_cmp expect actual
' '
@ -223,7 +223,7 @@ v1.0
EOF EOF
test_expect_success \ test_expect_success \
'listing tags using a name as pattern must print that one matching' ' 'listing tags using a name as pattern must print that one matching' '
git-tag -l v1.0 > actual && git tag -l v1.0 > actual &&
test_cmp expect actual test_cmp expect actual
' '
@ -233,14 +233,14 @@ v1.1.3
EOF EOF
test_expect_success \ test_expect_success \
'listing tags with ? in the pattern should print those matching' ' 'listing tags with ? in the pattern should print those matching' '
git-tag -l "v1.?.?" > actual && git tag -l "v1.?.?" > actual &&
test_cmp expect actual test_cmp expect actual
' '
>expect >expect
test_expect_success \ test_expect_success \
'listing tags using v.* should print nothing because none have v.' ' 'listing tags using v.* should print nothing because none have v.' '
git-tag -l "v.*" > actual && git tag -l "v.*" > actual &&
test_cmp expect actual test_cmp expect actual
' '
@ -252,7 +252,7 @@ v1.1.3
EOF EOF
test_expect_success \ test_expect_success \
'listing tags using v* should print only those having v' ' 'listing tags using v* should print only those having v' '
git-tag -l "v*" > actual && git tag -l "v*" > actual &&
test_cmp expect actual test_cmp expect actual
' '
@ -260,21 +260,21 @@ test_expect_success \
test_expect_success \ test_expect_success \
'a non-annotated tag created without parameters should point to HEAD' ' 'a non-annotated tag created without parameters should point to HEAD' '
git-tag non-annotated-tag && git tag non-annotated-tag &&
test $(git cat-file -t non-annotated-tag) = commit && test $(git cat-file -t non-annotated-tag) = commit &&
test $(git rev-parse non-annotated-tag) = $(git rev-parse HEAD) test $(git rev-parse non-annotated-tag) = $(git rev-parse HEAD)
' '
test_expect_success 'trying to verify an unknown tag should fail' \ test_expect_success 'trying to verify an unknown tag should fail' \
'test_must_fail git-tag -v unknown-tag' 'test_must_fail git tag -v unknown-tag'
test_expect_success \ test_expect_success \
'trying to verify a non-annotated and non-signed tag should fail' \ 'trying to verify a non-annotated and non-signed tag should fail' \
'test_must_fail git-tag -v non-annotated-tag' 'test_must_fail git tag -v non-annotated-tag'
test_expect_success \ test_expect_success \
'trying to verify many non-annotated or unknown tags, should fail' \ 'trying to verify many non-annotated or unknown tags, should fail' \
'test_must_fail git-tag -v unknown-tag1 non-annotated-tag unknown-tag2' 'test_must_fail git tag -v unknown-tag1 non-annotated-tag unknown-tag2'
# creating annotated tags: # creating annotated tags:
@ -300,7 +300,7 @@ get_tag_header annotated-tag $commit commit $time >expect
echo "A message" >>expect echo "A message" >>expect
test_expect_success \ test_expect_success \
'creating an annotated tag with -m message should succeed' ' 'creating an annotated tag with -m message should succeed' '
git-tag -m "A message" annotated-tag && git tag -m "A message" annotated-tag &&
get_tag_msg annotated-tag >actual && get_tag_msg annotated-tag >actual &&
test_cmp expect actual test_cmp expect actual
' '
@ -313,7 +313,7 @@ get_tag_header file-annotated-tag $commit commit $time >expect
cat msgfile >>expect cat msgfile >>expect
test_expect_success \ test_expect_success \
'creating an annotated tag with -F messagefile should succeed' ' 'creating an annotated tag with -F messagefile should succeed' '
git-tag -F msgfile file-annotated-tag && git tag -F msgfile file-annotated-tag &&
get_tag_msg file-annotated-tag >actual && get_tag_msg file-annotated-tag >actual &&
test_cmp expect actual test_cmp expect actual
' '
@ -325,7 +325,7 @@ EOF
get_tag_header stdin-annotated-tag $commit commit $time >expect get_tag_header stdin-annotated-tag $commit commit $time >expect
cat inputmsg >>expect cat inputmsg >>expect
test_expect_success 'creating an annotated tag with -F - should succeed' ' test_expect_success 'creating an annotated tag with -F - should succeed' '
git-tag -F - stdin-annotated-tag <inputmsg && git tag -F - stdin-annotated-tag <inputmsg &&
get_tag_msg stdin-annotated-tag >actual && get_tag_msg stdin-annotated-tag >actual &&
test_cmp expect actual test_cmp expect actual
' '
@ -334,7 +334,7 @@ test_expect_success \
'trying to create a tag with a non-existing -F file should fail' ' 'trying to create a tag with a non-existing -F file should fail' '
! test -f nonexistingfile && ! test -f nonexistingfile &&
! tag_exists notag && ! tag_exists notag &&
test_must_fail git-tag -F nonexistingfile notag && test_must_fail git tag -F nonexistingfile notag &&
! tag_exists notag ! tag_exists notag
' '
@ -343,11 +343,11 @@ test_expect_success \
echo "message file 1" >msgfile1 && echo "message file 1" >msgfile1 &&
echo "message file 2" >msgfile2 && echo "message file 2" >msgfile2 &&
! tag_exists msgtag && ! tag_exists msgtag &&
test_must_fail git-tag -m "message 1" -F msgfile1 msgtag && test_must_fail git tag -m "message 1" -F msgfile1 msgtag &&
! tag_exists msgtag && ! tag_exists msgtag &&
test_must_fail git-tag -F msgfile1 -m "message 1" msgtag && test_must_fail git tag -F msgfile1 -m "message 1" msgtag &&
! tag_exists msgtag && ! tag_exists msgtag &&
test_must_fail git-tag -m "message 1" -F msgfile1 \ test_must_fail git tag -m "message 1" -F msgfile1 \
-m "message 2" msgtag && -m "message 2" msgtag &&
! tag_exists msgtag ! tag_exists msgtag
' '
@ -357,7 +357,7 @@ test_expect_success \
get_tag_header empty-annotated-tag $commit commit $time >expect get_tag_header empty-annotated-tag $commit commit $time >expect
test_expect_success \ test_expect_success \
'creating a tag with an empty -m message should succeed' ' 'creating a tag with an empty -m message should succeed' '
git-tag -m "" empty-annotated-tag && git tag -m "" empty-annotated-tag &&
get_tag_msg empty-annotated-tag >actual && get_tag_msg empty-annotated-tag >actual &&
test_cmp expect actual test_cmp expect actual
' '
@ -366,7 +366,7 @@ test_expect_success \
get_tag_header emptyfile-annotated-tag $commit commit $time >expect get_tag_header emptyfile-annotated-tag $commit commit $time >expect
test_expect_success \ test_expect_success \
'creating a tag with an empty -F messagefile should succeed' ' 'creating a tag with an empty -F messagefile should succeed' '
git-tag -F emptyfile emptyfile-annotated-tag && git tag -F emptyfile emptyfile-annotated-tag &&
get_tag_msg emptyfile-annotated-tag >actual && get_tag_msg emptyfile-annotated-tag >actual &&
test_cmp expect actual test_cmp expect actual
' '
@ -387,7 +387,7 @@ Trailing blank lines
EOF EOF
test_expect_success \ test_expect_success \
'extra blanks in the message for an annotated tag should be removed' ' 'extra blanks in the message for an annotated tag should be removed' '
git-tag -F blanksfile blanks-annotated-tag && git tag -F blanksfile blanks-annotated-tag &&
get_tag_msg blanks-annotated-tag >actual && get_tag_msg blanks-annotated-tag >actual &&
test_cmp expect actual test_cmp expect actual
' '
@ -395,7 +395,7 @@ test_expect_success \
get_tag_header blank-annotated-tag $commit commit $time >expect get_tag_header blank-annotated-tag $commit commit $time >expect
test_expect_success \ test_expect_success \
'creating a tag with blank -m message with spaces should succeed' ' 'creating a tag with blank -m message with spaces should succeed' '
git-tag -m " " blank-annotated-tag && git tag -m " " blank-annotated-tag &&
get_tag_msg blank-annotated-tag >actual && get_tag_msg blank-annotated-tag >actual &&
test_cmp expect actual test_cmp expect actual
' '
@ -406,7 +406,7 @@ echo ' ' >>blankfile
get_tag_header blankfile-annotated-tag $commit commit $time >expect get_tag_header blankfile-annotated-tag $commit commit $time >expect
test_expect_success \ test_expect_success \
'creating a tag with blank -F messagefile with spaces should succeed' ' 'creating a tag with blank -F messagefile with spaces should succeed' '
git-tag -F blankfile blankfile-annotated-tag && git tag -F blankfile blankfile-annotated-tag &&
get_tag_msg blankfile-annotated-tag >actual && get_tag_msg blankfile-annotated-tag >actual &&
test_cmp expect actual test_cmp expect actual
' '
@ -415,7 +415,7 @@ printf ' ' >blanknonlfile
get_tag_header blanknonlfile-annotated-tag $commit commit $time >expect get_tag_header blanknonlfile-annotated-tag $commit commit $time >expect
test_expect_success \ test_expect_success \
'creating a tag with -F file of spaces and no newline should succeed' ' 'creating a tag with -F file of spaces and no newline should succeed' '
git-tag -F blanknonlfile blanknonlfile-annotated-tag && git tag -F blanknonlfile blanknonlfile-annotated-tag &&
get_tag_msg blanknonlfile-annotated-tag >actual && get_tag_msg blanknonlfile-annotated-tag >actual &&
test_cmp expect actual test_cmp expect actual
' '
@ -450,7 +450,7 @@ Last line.
EOF EOF
test_expect_success \ test_expect_success \
'creating a tag using a -F messagefile with #comments should succeed' ' 'creating a tag using a -F messagefile with #comments should succeed' '
git-tag -F commentsfile comments-annotated-tag && git tag -F commentsfile comments-annotated-tag &&
get_tag_msg comments-annotated-tag >actual && get_tag_msg comments-annotated-tag >actual &&
test_cmp expect actual test_cmp expect actual
' '
@ -458,7 +458,7 @@ test_expect_success \
get_tag_header comment-annotated-tag $commit commit $time >expect get_tag_header comment-annotated-tag $commit commit $time >expect
test_expect_success \ test_expect_success \
'creating a tag with a #comment in the -m message should succeed' ' 'creating a tag with a #comment in the -m message should succeed' '
git-tag -m "#comment" comment-annotated-tag && git tag -m "#comment" comment-annotated-tag &&
get_tag_msg comment-annotated-tag >actual && get_tag_msg comment-annotated-tag >actual &&
test_cmp expect actual test_cmp expect actual
' '
@ -469,7 +469,7 @@ echo '####' >>commentfile
get_tag_header commentfile-annotated-tag $commit commit $time >expect get_tag_header commentfile-annotated-tag $commit commit $time >expect
test_expect_success \ test_expect_success \
'creating a tag with #comments in the -F messagefile should succeed' ' 'creating a tag with #comments in the -F messagefile should succeed' '
git-tag -F commentfile commentfile-annotated-tag && git tag -F commentfile commentfile-annotated-tag &&
get_tag_msg commentfile-annotated-tag >actual && get_tag_msg commentfile-annotated-tag >actual &&
test_cmp expect actual test_cmp expect actual
' '
@ -478,7 +478,7 @@ printf '#comment' >commentnonlfile
get_tag_header commentnonlfile-annotated-tag $commit commit $time >expect get_tag_header commentnonlfile-annotated-tag $commit commit $time >expect
test_expect_success \ test_expect_success \
'creating a tag with a file of #comment and no newline should succeed' ' 'creating a tag with a file of #comment and no newline should succeed' '
git-tag -F commentnonlfile commentnonlfile-annotated-tag && git tag -F commentnonlfile commentnonlfile-annotated-tag &&
get_tag_msg commentnonlfile-annotated-tag >actual && get_tag_msg commentnonlfile-annotated-tag >actual &&
test_cmp expect actual test_cmp expect actual
' '
@ -487,51 +487,51 @@ test_expect_success \
test_expect_success \ test_expect_success \
'listing the one-line message of a non-signed tag should succeed' ' 'listing the one-line message of a non-signed tag should succeed' '
git-tag -m "A msg" tag-one-line && git tag -m "A msg" tag-one-line &&
echo "tag-one-line" >expect && echo "tag-one-line" >expect &&
git-tag -l | grep "^tag-one-line" >actual && git tag -l | grep "^tag-one-line" >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n0 -l | grep "^tag-one-line" >actual && git tag -n0 -l | grep "^tag-one-line" >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n0 -l tag-one-line >actual && git tag -n0 -l tag-one-line >actual &&
test_cmp expect actual && test_cmp expect actual &&
echo "tag-one-line A msg" >expect && echo "tag-one-line A msg" >expect &&
git-tag -n1 -l | grep "^tag-one-line" >actual && git tag -n1 -l | grep "^tag-one-line" >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n -l | grep "^tag-one-line" >actual && git tag -n -l | grep "^tag-one-line" >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n1 -l tag-one-line >actual && git tag -n1 -l tag-one-line >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n2 -l tag-one-line >actual && git tag -n2 -l tag-one-line >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n999 -l tag-one-line >actual && git tag -n999 -l tag-one-line >actual &&
test_cmp expect actual test_cmp expect actual
' '
test_expect_success \ test_expect_success \
'listing the zero-lines message of a non-signed tag should succeed' ' 'listing the zero-lines message of a non-signed tag should succeed' '
git-tag -m "" tag-zero-lines && git tag -m "" tag-zero-lines &&
echo "tag-zero-lines" >expect && echo "tag-zero-lines" >expect &&
git-tag -l | grep "^tag-zero-lines" >actual && git tag -l | grep "^tag-zero-lines" >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n0 -l | grep "^tag-zero-lines" >actual && git tag -n0 -l | grep "^tag-zero-lines" >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n0 -l tag-zero-lines >actual && git tag -n0 -l tag-zero-lines >actual &&
test_cmp expect actual && test_cmp expect actual &&
echo "tag-zero-lines " >expect && echo "tag-zero-lines " >expect &&
git-tag -n1 -l | grep "^tag-zero-lines" >actual && git tag -n1 -l | grep "^tag-zero-lines" >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n -l | grep "^tag-zero-lines" >actual && git tag -n -l | grep "^tag-zero-lines" >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n1 -l tag-zero-lines >actual && git tag -n1 -l tag-zero-lines >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n2 -l tag-zero-lines >actual && git tag -n2 -l tag-zero-lines >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n999 -l tag-zero-lines >actual && git tag -n999 -l tag-zero-lines >actual &&
test_cmp expect actual test_cmp expect actual
' '
@ -540,42 +540,42 @@ echo 'tag line two' >>annotagmsg
echo 'tag line three' >>annotagmsg echo 'tag line three' >>annotagmsg
test_expect_success \ test_expect_success \
'listing many message lines of a non-signed tag should succeed' ' 'listing many message lines of a non-signed tag should succeed' '
git-tag -F annotagmsg tag-lines && git tag -F annotagmsg tag-lines &&
echo "tag-lines" >expect && echo "tag-lines" >expect &&
git-tag -l | grep "^tag-lines" >actual && git tag -l | grep "^tag-lines" >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n0 -l | grep "^tag-lines" >actual && git tag -n0 -l | grep "^tag-lines" >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n0 -l tag-lines >actual && git tag -n0 -l tag-lines >actual &&
test_cmp expect actual && test_cmp expect actual &&
echo "tag-lines tag line one" >expect && echo "tag-lines tag line one" >expect &&
git-tag -n1 -l | grep "^tag-lines" >actual && git tag -n1 -l | grep "^tag-lines" >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n -l | grep "^tag-lines" >actual && git tag -n -l | grep "^tag-lines" >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n1 -l tag-lines >actual && git tag -n1 -l tag-lines >actual &&
test_cmp expect actual && test_cmp expect actual &&
echo " tag line two" >>expect && echo " tag line two" >>expect &&
git-tag -n2 -l | grep "^ *tag.line" >actual && git tag -n2 -l | grep "^ *tag.line" >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n2 -l tag-lines >actual && git tag -n2 -l tag-lines >actual &&
test_cmp expect actual && test_cmp expect actual &&
echo " tag line three" >>expect && echo " tag line three" >>expect &&
git-tag -n3 -l | grep "^ *tag.line" >actual && git tag -n3 -l | grep "^ *tag.line" >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n3 -l tag-lines >actual && git tag -n3 -l tag-lines >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n4 -l | grep "^ *tag.line" >actual && git tag -n4 -l | grep "^ *tag.line" >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n4 -l tag-lines >actual && git tag -n4 -l tag-lines >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n99 -l | grep "^ *tag.line" >actual && git tag -n99 -l | grep "^ *tag.line" >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n99 -l tag-lines >actual && git tag -n99 -l tag-lines >actual &&
test_cmp expect actual test_cmp expect actual
' '
@ -592,19 +592,19 @@ fi
test_expect_success \ test_expect_success \
'trying to verify an annotated non-signed tag should fail' ' 'trying to verify an annotated non-signed tag should fail' '
tag_exists annotated-tag && tag_exists annotated-tag &&
test_must_fail git-tag -v annotated-tag test_must_fail git tag -v annotated-tag
' '
test_expect_success \ test_expect_success \
'trying to verify a file-annotated non-signed tag should fail' ' 'trying to verify a file-annotated non-signed tag should fail' '
tag_exists file-annotated-tag && tag_exists file-annotated-tag &&
test_must_fail git-tag -v file-annotated-tag test_must_fail git tag -v file-annotated-tag
' '
test_expect_success \ test_expect_success \
'trying to verify two annotated non-signed tags should fail' ' 'trying to verify two annotated non-signed tags should fail' '
tag_exists annotated-tag file-annotated-tag && tag_exists annotated-tag file-annotated-tag &&
test_must_fail git-tag -v annotated-tag file-annotated-tag test_must_fail git tag -v annotated-tag file-annotated-tag
' '
# creating and verifying signed tags: # creating and verifying signed tags:
@ -634,7 +634,7 @@ get_tag_header signed-tag $commit commit $time >expect
echo 'A signed tag message' >>expect echo 'A signed tag message' >>expect
echo '-----BEGIN PGP SIGNATURE-----' >>expect echo '-----BEGIN PGP SIGNATURE-----' >>expect
test_expect_success 'creating a signed tag with -m message should succeed' ' test_expect_success 'creating a signed tag with -m message should succeed' '
git-tag -s -m "A signed tag message" signed-tag && git tag -s -m "A signed tag message" signed-tag &&
get_tag_msg signed-tag >actual && get_tag_msg signed-tag >actual &&
test_cmp expect actual test_cmp expect actual
' '
@ -675,7 +675,7 @@ get_tag_header implied-sign $commit commit $time >expect
./fakeeditor >>expect ./fakeeditor >>expect
echo '-----BEGIN PGP SIGNATURE-----' >>expect echo '-----BEGIN PGP SIGNATURE-----' >>expect
test_expect_success '-u implies signed tag' ' test_expect_success '-u implies signed tag' '
GIT_EDITOR=./fakeeditor git-tag -u CDDE430D implied-sign && GIT_EDITOR=./fakeeditor git tag -u CDDE430D implied-sign &&
get_tag_msg implied-sign >actual && get_tag_msg implied-sign >actual &&
test_cmp expect actual test_cmp expect actual
' '
@ -689,7 +689,7 @@ cat sigmsgfile >>expect
echo '-----BEGIN PGP SIGNATURE-----' >>expect echo '-----BEGIN PGP SIGNATURE-----' >>expect
test_expect_success \ test_expect_success \
'creating a signed tag with -F messagefile should succeed' ' 'creating a signed tag with -F messagefile should succeed' '
git-tag -s -F sigmsgfile file-signed-tag && git tag -s -F sigmsgfile file-signed-tag &&
get_tag_msg file-signed-tag >actual && get_tag_msg file-signed-tag >actual &&
test_cmp expect actual test_cmp expect actual
' '
@ -702,7 +702,7 @@ get_tag_header stdin-signed-tag $commit commit $time >expect
cat siginputmsg >>expect cat siginputmsg >>expect
echo '-----BEGIN PGP SIGNATURE-----' >>expect echo '-----BEGIN PGP SIGNATURE-----' >>expect
test_expect_success 'creating a signed tag with -F - should succeed' ' test_expect_success 'creating a signed tag with -F - should succeed' '
git-tag -s -F - stdin-signed-tag <siginputmsg && git tag -s -F - stdin-signed-tag <siginputmsg &&
get_tag_msg stdin-signed-tag >actual && get_tag_msg stdin-signed-tag >actual &&
test_cmp expect actual test_cmp expect actual
' '
@ -711,7 +711,7 @@ get_tag_header implied-annotate $commit commit $time >expect
./fakeeditor >>expect ./fakeeditor >>expect
echo '-----BEGIN PGP SIGNATURE-----' >>expect echo '-----BEGIN PGP SIGNATURE-----' >>expect
test_expect_success '-s implies annotated tag' ' test_expect_success '-s implies annotated tag' '
GIT_EDITOR=./fakeeditor git-tag -s implied-annotate && GIT_EDITOR=./fakeeditor git tag -s implied-annotate &&
get_tag_msg implied-annotate >actual && get_tag_msg implied-annotate >actual &&
test_cmp expect actual test_cmp expect actual
' '
@ -720,23 +720,23 @@ test_expect_success \
'trying to create a signed tag with non-existing -F file should fail' ' 'trying to create a signed tag with non-existing -F file should fail' '
! test -f nonexistingfile && ! test -f nonexistingfile &&
! tag_exists nosigtag && ! tag_exists nosigtag &&
test_must_fail git-tag -s -F nonexistingfile nosigtag && test_must_fail git tag -s -F nonexistingfile nosigtag &&
! tag_exists nosigtag ! tag_exists nosigtag
' '
test_expect_success 'verifying a signed tag should succeed' \ test_expect_success 'verifying a signed tag should succeed' \
'git-tag -v signed-tag' 'git tag -v signed-tag'
test_expect_success 'verifying two signed tags in one command should succeed' \ test_expect_success 'verifying two signed tags in one command should succeed' \
'git-tag -v signed-tag file-signed-tag' 'git tag -v signed-tag file-signed-tag'
test_expect_success \ test_expect_success \
'verifying many signed and non-signed tags should fail' ' 'verifying many signed and non-signed tags should fail' '
test_must_fail git-tag -v signed-tag annotated-tag && test_must_fail git tag -v signed-tag annotated-tag &&
test_must_fail git-tag -v file-annotated-tag file-signed-tag && test_must_fail git tag -v file-annotated-tag file-signed-tag &&
test_must_fail git-tag -v annotated-tag \ test_must_fail git tag -v annotated-tag \
file-signed-tag file-annotated-tag && file-signed-tag file-annotated-tag &&
test_must_fail git-tag -v signed-tag annotated-tag file-signed-tag test_must_fail git tag -v signed-tag annotated-tag file-signed-tag
' '
test_expect_success 'verifying a forged tag should fail' ' test_expect_success 'verifying a forged tag should fail' '
@ -744,7 +744,7 @@ test_expect_success 'verifying a forged tag should fail' '
sed -e "s/signed-tag/forged-tag/" | sed -e "s/signed-tag/forged-tag/" |
git mktag) && git mktag) &&
git tag forged-tag $forged && git tag forged-tag $forged &&
test_must_fail git-tag -v forged-tag test_must_fail git tag -v forged-tag
' '
# blank and empty messages for signed tags: # blank and empty messages for signed tags:
@ -753,10 +753,10 @@ get_tag_header empty-signed-tag $commit commit $time >expect
echo '-----BEGIN PGP SIGNATURE-----' >>expect echo '-----BEGIN PGP SIGNATURE-----' >>expect
test_expect_success \ test_expect_success \
'creating a signed tag with an empty -m message should succeed' ' 'creating a signed tag with an empty -m message should succeed' '
git-tag -s -m "" empty-signed-tag && git tag -s -m "" empty-signed-tag &&
get_tag_msg empty-signed-tag >actual && get_tag_msg empty-signed-tag >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -v empty-signed-tag git tag -v empty-signed-tag
' '
>sigemptyfile >sigemptyfile
@ -764,10 +764,10 @@ get_tag_header emptyfile-signed-tag $commit commit $time >expect
echo '-----BEGIN PGP SIGNATURE-----' >>expect echo '-----BEGIN PGP SIGNATURE-----' >>expect
test_expect_success \ test_expect_success \
'creating a signed tag with an empty -F messagefile should succeed' ' 'creating a signed tag with an empty -F messagefile should succeed' '
git-tag -s -F sigemptyfile emptyfile-signed-tag && git tag -s -F sigemptyfile emptyfile-signed-tag &&
get_tag_msg emptyfile-signed-tag >actual && get_tag_msg emptyfile-signed-tag >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -v emptyfile-signed-tag git tag -v emptyfile-signed-tag
' '
printf '\n\n \n\t\nLeading blank lines\n' > sigblanksfile printf '\n\n \n\t\nLeading blank lines\n' > sigblanksfile
@ -787,20 +787,20 @@ EOF
echo '-----BEGIN PGP SIGNATURE-----' >>expect echo '-----BEGIN PGP SIGNATURE-----' >>expect
test_expect_success \ test_expect_success \
'extra blanks in the message for a signed tag should be removed' ' 'extra blanks in the message for a signed tag should be removed' '
git-tag -s -F sigblanksfile blanks-signed-tag && git tag -s -F sigblanksfile blanks-signed-tag &&
get_tag_msg blanks-signed-tag >actual && get_tag_msg blanks-signed-tag >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -v blanks-signed-tag git tag -v blanks-signed-tag
' '
get_tag_header blank-signed-tag $commit commit $time >expect get_tag_header blank-signed-tag $commit commit $time >expect
echo '-----BEGIN PGP SIGNATURE-----' >>expect echo '-----BEGIN PGP SIGNATURE-----' >>expect
test_expect_success \ test_expect_success \
'creating a signed tag with a blank -m message should succeed' ' 'creating a signed tag with a blank -m message should succeed' '
git-tag -s -m " " blank-signed-tag && git tag -s -m " " blank-signed-tag &&
get_tag_msg blank-signed-tag >actual && get_tag_msg blank-signed-tag >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -v blank-signed-tag git tag -v blank-signed-tag
' '
echo ' ' >sigblankfile echo ' ' >sigblankfile
@ -810,10 +810,10 @@ get_tag_header blankfile-signed-tag $commit commit $time >expect
echo '-----BEGIN PGP SIGNATURE-----' >>expect echo '-----BEGIN PGP SIGNATURE-----' >>expect
test_expect_success \ test_expect_success \
'creating a signed tag with blank -F file with spaces should succeed' ' 'creating a signed tag with blank -F file with spaces should succeed' '
git-tag -s -F sigblankfile blankfile-signed-tag && git tag -s -F sigblankfile blankfile-signed-tag &&
get_tag_msg blankfile-signed-tag >actual && get_tag_msg blankfile-signed-tag >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -v blankfile-signed-tag git tag -v blankfile-signed-tag
' '
printf ' ' >sigblanknonlfile printf ' ' >sigblanknonlfile
@ -821,10 +821,10 @@ get_tag_header blanknonlfile-signed-tag $commit commit $time >expect
echo '-----BEGIN PGP SIGNATURE-----' >>expect echo '-----BEGIN PGP SIGNATURE-----' >>expect
test_expect_success \ test_expect_success \
'creating a signed tag with spaces and no newline should succeed' ' 'creating a signed tag with spaces and no newline should succeed' '
git-tag -s -F sigblanknonlfile blanknonlfile-signed-tag && git tag -s -F sigblanknonlfile blanknonlfile-signed-tag &&
get_tag_msg blanknonlfile-signed-tag >actual && get_tag_msg blanknonlfile-signed-tag >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -v signed-tag git tag -v signed-tag
' '
# messages with commented lines for signed tags: # messages with commented lines for signed tags:
@ -858,20 +858,20 @@ EOF
echo '-----BEGIN PGP SIGNATURE-----' >>expect echo '-----BEGIN PGP SIGNATURE-----' >>expect
test_expect_success \ test_expect_success \
'creating a signed tag with a -F file with #comments should succeed' ' 'creating a signed tag with a -F file with #comments should succeed' '
git-tag -s -F sigcommentsfile comments-signed-tag && git tag -s -F sigcommentsfile comments-signed-tag &&
get_tag_msg comments-signed-tag >actual && get_tag_msg comments-signed-tag >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -v comments-signed-tag git tag -v comments-signed-tag
' '
get_tag_header comment-signed-tag $commit commit $time >expect get_tag_header comment-signed-tag $commit commit $time >expect
echo '-----BEGIN PGP SIGNATURE-----' >>expect echo '-----BEGIN PGP SIGNATURE-----' >>expect
test_expect_success \ test_expect_success \
'creating a signed tag with #commented -m message should succeed' ' 'creating a signed tag with #commented -m message should succeed' '
git-tag -s -m "#comment" comment-signed-tag && git tag -s -m "#comment" comment-signed-tag &&
get_tag_msg comment-signed-tag >actual && get_tag_msg comment-signed-tag >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -v comment-signed-tag git tag -v comment-signed-tag
' '
echo '#comment' >sigcommentfile echo '#comment' >sigcommentfile
@ -881,10 +881,10 @@ get_tag_header commentfile-signed-tag $commit commit $time >expect
echo '-----BEGIN PGP SIGNATURE-----' >>expect echo '-----BEGIN PGP SIGNATURE-----' >>expect
test_expect_success \ test_expect_success \
'creating a signed tag with #commented -F messagefile should succeed' ' 'creating a signed tag with #commented -F messagefile should succeed' '
git-tag -s -F sigcommentfile commentfile-signed-tag && git tag -s -F sigcommentfile commentfile-signed-tag &&
get_tag_msg commentfile-signed-tag >actual && get_tag_msg commentfile-signed-tag >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -v commentfile-signed-tag git tag -v commentfile-signed-tag
' '
printf '#comment' >sigcommentnonlfile printf '#comment' >sigcommentnonlfile
@ -892,61 +892,61 @@ get_tag_header commentnonlfile-signed-tag $commit commit $time >expect
echo '-----BEGIN PGP SIGNATURE-----' >>expect echo '-----BEGIN PGP SIGNATURE-----' >>expect
test_expect_success \ test_expect_success \
'creating a signed tag with a #comment and no newline should succeed' ' 'creating a signed tag with a #comment and no newline should succeed' '
git-tag -s -F sigcommentnonlfile commentnonlfile-signed-tag && git tag -s -F sigcommentnonlfile commentnonlfile-signed-tag &&
get_tag_msg commentnonlfile-signed-tag >actual && get_tag_msg commentnonlfile-signed-tag >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -v commentnonlfile-signed-tag git tag -v commentnonlfile-signed-tag
' '
# listing messages for signed tags: # listing messages for signed tags:
test_expect_success \ test_expect_success \
'listing the one-line message of a signed tag should succeed' ' 'listing the one-line message of a signed tag should succeed' '
git-tag -s -m "A message line signed" stag-one-line && git tag -s -m "A message line signed" stag-one-line &&
echo "stag-one-line" >expect && echo "stag-one-line" >expect &&
git-tag -l | grep "^stag-one-line" >actual && git tag -l | grep "^stag-one-line" >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n0 -l | grep "^stag-one-line" >actual && git tag -n0 -l | grep "^stag-one-line" >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n0 -l stag-one-line >actual && git tag -n0 -l stag-one-line >actual &&
test_cmp expect actual && test_cmp expect actual &&
echo "stag-one-line A message line signed" >expect && echo "stag-one-line A message line signed" >expect &&
git-tag -n1 -l | grep "^stag-one-line" >actual && git tag -n1 -l | grep "^stag-one-line" >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n -l | grep "^stag-one-line" >actual && git tag -n -l | grep "^stag-one-line" >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n1 -l stag-one-line >actual && git tag -n1 -l stag-one-line >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n2 -l stag-one-line >actual && git tag -n2 -l stag-one-line >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n999 -l stag-one-line >actual && git tag -n999 -l stag-one-line >actual &&
test_cmp expect actual test_cmp expect actual
' '
test_expect_success \ test_expect_success \
'listing the zero-lines message of a signed tag should succeed' ' 'listing the zero-lines message of a signed tag should succeed' '
git-tag -s -m "" stag-zero-lines && git tag -s -m "" stag-zero-lines &&
echo "stag-zero-lines" >expect && echo "stag-zero-lines" >expect &&
git-tag -l | grep "^stag-zero-lines" >actual && git tag -l | grep "^stag-zero-lines" >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n0 -l | grep "^stag-zero-lines" >actual && git tag -n0 -l | grep "^stag-zero-lines" >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n0 -l stag-zero-lines >actual && git tag -n0 -l stag-zero-lines >actual &&
test_cmp expect actual && test_cmp expect actual &&
echo "stag-zero-lines " >expect && echo "stag-zero-lines " >expect &&
git-tag -n1 -l | grep "^stag-zero-lines" >actual && git tag -n1 -l | grep "^stag-zero-lines" >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n -l | grep "^stag-zero-lines" >actual && git tag -n -l | grep "^stag-zero-lines" >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n1 -l stag-zero-lines >actual && git tag -n1 -l stag-zero-lines >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n2 -l stag-zero-lines >actual && git tag -n2 -l stag-zero-lines >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n999 -l stag-zero-lines >actual && git tag -n999 -l stag-zero-lines >actual &&
test_cmp expect actual test_cmp expect actual
' '
@ -955,42 +955,42 @@ echo 'stag line two' >>sigtagmsg
echo 'stag line three' >>sigtagmsg echo 'stag line three' >>sigtagmsg
test_expect_success \ test_expect_success \
'listing many message lines of a signed tag should succeed' ' 'listing many message lines of a signed tag should succeed' '
git-tag -s -F sigtagmsg stag-lines && git tag -s -F sigtagmsg stag-lines &&
echo "stag-lines" >expect && echo "stag-lines" >expect &&
git-tag -l | grep "^stag-lines" >actual && git tag -l | grep "^stag-lines" >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n0 -l | grep "^stag-lines" >actual && git tag -n0 -l | grep "^stag-lines" >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n0 -l stag-lines >actual && git tag -n0 -l stag-lines >actual &&
test_cmp expect actual && test_cmp expect actual &&
echo "stag-lines stag line one" >expect && echo "stag-lines stag line one" >expect &&
git-tag -n1 -l | grep "^stag-lines" >actual && git tag -n1 -l | grep "^stag-lines" >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n -l | grep "^stag-lines" >actual && git tag -n -l | grep "^stag-lines" >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n1 -l stag-lines >actual && git tag -n1 -l stag-lines >actual &&
test_cmp expect actual && test_cmp expect actual &&
echo " stag line two" >>expect && echo " stag line two" >>expect &&
git-tag -n2 -l | grep "^ *stag.line" >actual && git tag -n2 -l | grep "^ *stag.line" >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n2 -l stag-lines >actual && git tag -n2 -l stag-lines >actual &&
test_cmp expect actual && test_cmp expect actual &&
echo " stag line three" >>expect && echo " stag line three" >>expect &&
git-tag -n3 -l | grep "^ *stag.line" >actual && git tag -n3 -l | grep "^ *stag.line" >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n3 -l stag-lines >actual && git tag -n3 -l stag-lines >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n4 -l | grep "^ *stag.line" >actual && git tag -n4 -l | grep "^ *stag.line" >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n4 -l stag-lines >actual && git tag -n4 -l stag-lines >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n99 -l | grep "^ *stag.line" >actual && git tag -n99 -l | grep "^ *stag.line" >actual &&
test_cmp expect actual && test_cmp expect actual &&
git-tag -n99 -l stag-lines >actual && git tag -n99 -l stag-lines >actual &&
test_cmp expect actual test_cmp expect actual
' '
@ -1005,7 +1005,7 @@ echo "A message for a tree" >>expect
echo '-----BEGIN PGP SIGNATURE-----' >>expect echo '-----BEGIN PGP SIGNATURE-----' >>expect
test_expect_success \ test_expect_success \
'creating a signed tag pointing to a tree should succeed' ' 'creating a signed tag pointing to a tree should succeed' '
git-tag -s -m "A message for a tree" tree-signed-tag HEAD^{tree} && git tag -s -m "A message for a tree" tree-signed-tag HEAD^{tree} &&
get_tag_msg tree-signed-tag >actual && get_tag_msg tree-signed-tag >actual &&
test_cmp expect actual test_cmp expect actual
' '
@ -1015,7 +1015,7 @@ echo "A message for a blob" >>expect
echo '-----BEGIN PGP SIGNATURE-----' >>expect echo '-----BEGIN PGP SIGNATURE-----' >>expect
test_expect_success \ test_expect_success \
'creating a signed tag pointing to a blob should succeed' ' 'creating a signed tag pointing to a blob should succeed' '
git-tag -s -m "A message for a blob" blob-signed-tag HEAD:foo && git tag -s -m "A message for a blob" blob-signed-tag HEAD:foo &&
get_tag_msg blob-signed-tag >actual && get_tag_msg blob-signed-tag >actual &&
test_cmp expect actual test_cmp expect actual
' '
@ -1025,7 +1025,7 @@ echo "A message for another tag" >>expect
echo '-----BEGIN PGP SIGNATURE-----' >>expect echo '-----BEGIN PGP SIGNATURE-----' >>expect
test_expect_success \ test_expect_success \
'creating a signed tag pointing to another tag should succeed' ' 'creating a signed tag pointing to another tag should succeed' '
git-tag -s -m "A message for another tag" tag-signed-tag signed-tag && git tag -s -m "A message for another tag" tag-signed-tag signed-tag &&
get_tag_msg tag-signed-tag >actual && get_tag_msg tag-signed-tag >actual &&
test_cmp expect actual test_cmp expect actual
' '
@ -1033,7 +1033,7 @@ test_expect_success \
# try to sign with bad user.signingkey # try to sign with bad user.signingkey
git config user.signingkey BobTheMouse git config user.signingkey BobTheMouse
test_expect_success \ test_expect_success \
'git-tag -s fails if gpg is misconfigured' \ 'git tag -s fails if gpg is misconfigured' \
'test_must_fail git tag -s -m tail tag-gpg-failure' 'test_must_fail git tag -s -m tail tag-gpg-failure'
git config --unset user.signingkey git config --unset user.signingkey
@ -1042,10 +1042,10 @@ git config --unset user.signingkey
rm -rf gpghome rm -rf gpghome
test_expect_success \ test_expect_success \
'verify signed tag fails when public key is not present' \ 'verify signed tag fails when public key is not present' \
'test_must_fail git-tag -v signed-tag' 'test_must_fail git tag -v signed-tag'
test_expect_success \ test_expect_success \
'git-tag -a fails if tag annotation is empty' ' 'git tag -a fails if tag annotation is empty' '
! (GIT_EDITOR=cat git tag -a initial-comment) ! (GIT_EDITOR=cat git tag -a initial-comment)
' '

View File

@ -3,7 +3,7 @@
# Copyright (c) 2006 Shawn Pearce # Copyright (c) 2006 Shawn Pearce
# #
test_description='git-reset should cull empty subdirs' test_description='git reset should cull empty subdirs'
. ./test-lib.sh . ./test-lib.sh
test_expect_success \ test_expect_success \
@ -11,7 +11,7 @@ test_expect_success \
'mkdir path0 && 'mkdir path0 &&
cp "$TEST_DIRECTORY"/../COPYING path0/COPYING && cp "$TEST_DIRECTORY"/../COPYING path0/COPYING &&
git add path0/COPYING && git add path0/COPYING &&
git-commit -m add -a' git commit -m add -a'
test_expect_success \ test_expect_success \
'creating second files' \ 'creating second files' \
@ -25,11 +25,11 @@ test_expect_success \
git add path1/COPYING && git add path1/COPYING &&
git add COPYING && git add COPYING &&
git add path0/COPYING-TOO && git add path0/COPYING-TOO &&
git-commit -m change -a' git commit -m change -a'
test_expect_success \ test_expect_success \
'resetting tree HEAD^' \ 'resetting tree HEAD^' \
'git-reset --hard HEAD^' 'git reset --hard HEAD^'
test_expect_success \ test_expect_success \
'checking initial files exist after rewind' \ 'checking initial files exist after rewind' \

View File

@ -3,9 +3,9 @@
# Copyright (c) 2007 Carlos Rica # Copyright (c) 2007 Carlos Rica
# #
test_description='git-reset test_description='git reset
Documented tests for git-reset' Documented tests for git reset'
. ./test-lib.sh . ./test-lib.sh

View File

@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
test_description='git-reset in a bare repository' test_description='git reset in a bare repository'
. ./test-lib.sh . ./test-lib.sh
test_expect_success 'setup non-bare' ' test_expect_success 'setup non-bare' '

View File

@ -3,7 +3,7 @@
# Copyright (c) 2006 Junio C Hamano # Copyright (c) 2006 Junio C Hamano
# #
test_description='git-checkout tests. test_description='git checkout tests.
Creates master, forks renamer and side branches from it. Creates master, forks renamer and side branches from it.
Test switching across them. Test switching across them.

View File

@ -3,7 +3,7 @@
# Copyright (c) 2007 Michael Spang # Copyright (c) 2007 Michael Spang
# #
test_description='git-clean basic tests' test_description='git clean basic tests'
. ./test-lib.sh . ./test-lib.sh
@ -16,17 +16,17 @@ test_expect_success 'setup' '
echo build >.gitignore && echo build >.gitignore &&
echo \*.o >>.gitignore && echo \*.o >>.gitignore &&
git add . && git add . &&
git-commit -m setup && git commit -m setup &&
touch src/part2.c README && touch src/part2.c README &&
git add . git add .
' '
test_expect_success 'git-clean' ' test_expect_success 'git clean' '
mkdir -p build docs && mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so && touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
git-clean && git clean &&
test -f Makefile && test -f Makefile &&
test -f README && test -f README &&
test -f src/part1.c && test -f src/part1.c &&
@ -39,11 +39,11 @@ test_expect_success 'git-clean' '
' '
test_expect_success 'git-clean src/' ' test_expect_success 'git clean src/' '
mkdir -p build docs && mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so && touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
git-clean src/ && git clean src/ &&
test -f Makefile && test -f Makefile &&
test -f README && test -f README &&
test -f src/part1.c && test -f src/part1.c &&
@ -56,11 +56,11 @@ test_expect_success 'git-clean src/' '
' '
test_expect_success 'git-clean src/ src/' ' test_expect_success 'git clean src/ src/' '
mkdir -p build docs && mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so && touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
git-clean src/ src/ && git clean src/ src/ &&
test -f Makefile && test -f Makefile &&
test -f README && test -f README &&
test -f src/part1.c && test -f src/part1.c &&
@ -73,11 +73,11 @@ test_expect_success 'git-clean src/ src/' '
' '
test_expect_success 'git-clean with prefix' ' test_expect_success 'git clean with prefix' '
mkdir -p build docs src/test && mkdir -p build docs src/test &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so src/test/1.c && touch a.out src/part3.c docs/manual.txt obj.o build/lib.so src/test/1.c &&
(cd src/ && git-clean) && (cd src/ && git clean) &&
test -f Makefile && test -f Makefile &&
test -f README && test -f README &&
test -f src/part1.c && test -f src/part1.c &&
@ -91,7 +91,7 @@ test_expect_success 'git-clean with prefix' '
' '
test_expect_success 'git-clean with relative prefix' ' test_expect_success 'git clean with relative prefix' '
mkdir -p build docs && mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so && touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
@ -106,7 +106,7 @@ test_expect_success 'git-clean with relative prefix' '
} }
' '
test_expect_success 'git-clean with absolute path' ' test_expect_success 'git clean with absolute path' '
mkdir -p build docs && mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so && touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
@ -121,7 +121,7 @@ test_expect_success 'git-clean with absolute path' '
} }
' '
test_expect_success 'git-clean with out of work tree relative path' ' test_expect_success 'git clean with out of work tree relative path' '
mkdir -p build docs && mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so && touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
@ -131,7 +131,7 @@ test_expect_success 'git-clean with out of work tree relative path' '
) )
' '
test_expect_success 'git-clean with out of work tree absolute path' ' test_expect_success 'git clean with out of work tree absolute path' '
mkdir -p build docs && mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so && touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
@ -142,11 +142,11 @@ test_expect_success 'git-clean with out of work tree absolute path' '
) )
' '
test_expect_success 'git-clean -d with prefix and path' ' test_expect_success 'git clean -d with prefix and path' '
mkdir -p build docs src/feature && mkdir -p build docs src/feature &&
touch a.out src/part3.c src/feature/file.c docs/manual.txt obj.o build/lib.so && touch a.out src/part3.c src/feature/file.c docs/manual.txt obj.o build/lib.so &&
(cd src/ && git-clean -d feature/) && (cd src/ && git clean -d feature/) &&
test -f Makefile && test -f Makefile &&
test -f README && test -f README &&
test -f src/part1.c && test -f src/part1.c &&
@ -160,12 +160,12 @@ test_expect_success 'git-clean -d with prefix and path' '
' '
test_expect_success 'git-clean symbolic link' ' test_expect_success 'git clean symbolic link' '
mkdir -p build docs && mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so && touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
ln -s docs/manual.txt src/part4.c ln -s docs/manual.txt src/part4.c
git-clean && git clean &&
test -f Makefile && test -f Makefile &&
test -f README && test -f README &&
test -f src/part1.c && test -f src/part1.c &&
@ -179,10 +179,10 @@ test_expect_success 'git-clean symbolic link' '
' '
test_expect_success 'git-clean with wildcard' ' test_expect_success 'git clean with wildcard' '
touch a.clean b.clean other.c && touch a.clean b.clean other.c &&
git-clean "*.clean" && git clean "*.clean" &&
test -f Makefile && test -f Makefile &&
test -f README && test -f README &&
test -f src/part1.c && test -f src/part1.c &&
@ -193,11 +193,11 @@ test_expect_success 'git-clean with wildcard' '
' '
test_expect_success 'git-clean -n' ' test_expect_success 'git clean -n' '
mkdir -p build docs && mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so && touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
git-clean -n && git clean -n &&
test -f Makefile && test -f Makefile &&
test -f README && test -f README &&
test -f src/part1.c && test -f src/part1.c &&
@ -210,11 +210,11 @@ test_expect_success 'git-clean -n' '
' '
test_expect_success 'git-clean -d' ' test_expect_success 'git clean -d' '
mkdir -p build docs && mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so && touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
git-clean -d && git clean -d &&
test -f Makefile && test -f Makefile &&
test -f README && test -f README &&
test -f src/part1.c && test -f src/part1.c &&
@ -227,11 +227,11 @@ test_expect_success 'git-clean -d' '
' '
test_expect_success 'git-clean -d src/ examples/' ' test_expect_success 'git clean -d src/ examples/' '
mkdir -p build docs examples && mkdir -p build docs examples &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so examples/1.c && touch a.out src/part3.c docs/manual.txt obj.o build/lib.so examples/1.c &&
git-clean -d src/ examples/ && git clean -d src/ examples/ &&
test -f Makefile && test -f Makefile &&
test -f README && test -f README &&
test -f src/part1.c && test -f src/part1.c &&
@ -245,11 +245,11 @@ test_expect_success 'git-clean -d src/ examples/' '
' '
test_expect_success 'git-clean -x' ' test_expect_success 'git clean -x' '
mkdir -p build docs && mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so && touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
git-clean -x && git clean -x &&
test -f Makefile && test -f Makefile &&
test -f README && test -f README &&
test -f src/part1.c && test -f src/part1.c &&
@ -262,11 +262,11 @@ test_expect_success 'git-clean -x' '
' '
test_expect_success 'git-clean -d -x' ' test_expect_success 'git clean -d -x' '
mkdir -p build docs && mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so && touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
git-clean -d -x && git clean -d -x &&
test -f Makefile && test -f Makefile &&
test -f README && test -f README &&
test -f src/part1.c && test -f src/part1.c &&
@ -279,11 +279,11 @@ test_expect_success 'git-clean -d -x' '
' '
test_expect_success 'git-clean -X' ' test_expect_success 'git clean -X' '
mkdir -p build docs && mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so && touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
git-clean -X && git clean -X &&
test -f Makefile && test -f Makefile &&
test -f README && test -f README &&
test -f src/part1.c && test -f src/part1.c &&
@ -296,11 +296,11 @@ test_expect_success 'git-clean -X' '
' '
test_expect_success 'git-clean -d -X' ' test_expect_success 'git clean -d -X' '
mkdir -p build docs && mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so && touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
git-clean -d -X && git clean -d -X &&
test -f Makefile && test -f Makefile &&
test -f README && test -f README &&
test -f src/part1.c && test -f src/part1.c &&
@ -331,7 +331,7 @@ test_expect_success 'clean.requireForce and -n' '
mkdir -p build docs && mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so && touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
git-clean -n && git clean -n &&
test -f Makefile && test -f Makefile &&
test -f README && test -f README &&
test -f src/part1.c && test -f src/part1.c &&
@ -346,7 +346,7 @@ test_expect_success 'clean.requireForce and -n' '
test_expect_success 'clean.requireForce and -f' ' test_expect_success 'clean.requireForce and -f' '
git-clean -f && git clean -f &&
test -f README && test -f README &&
test -f src/part1.c && test -f src/part1.c &&
test -f src/part2.c && test -f src/part2.c &&

View File

@ -6,7 +6,7 @@
test_description='Basic porcelain support for submodules test_description='Basic porcelain support for submodules
This test tries to verify basic sanity of the init, update and status This test tries to verify basic sanity of the init, update and status
subcommands of git-submodule. subcommands of git submodule.
' '
. ./test-lib.sh . ./test-lib.sh
@ -22,16 +22,16 @@ subcommands of git-submodule.
# #
test_expect_success 'Prepare submodule testing' ' test_expect_success 'Prepare submodule testing' '
: > t && : > t &&
git-add t && git add t &&
git-commit -m "initial commit" && git commit -m "initial commit" &&
git branch initial HEAD && git branch initial HEAD &&
mkdir init && mkdir init &&
cd init && cd init &&
git init && git init &&
echo a >a && echo a >a &&
git add a && git add a &&
git-commit -m "submodule commit 1" && git commit -m "submodule commit 1" &&
git-tag -a -m "rev-1" rev-1 && git tag -a -m "rev-1" rev-1 &&
rev1=$(git rev-parse HEAD) && rev1=$(git rev-parse HEAD) &&
if test -z "$rev1" if test -z "$rev1"
then then
@ -42,13 +42,13 @@ test_expect_success 'Prepare submodule testing' '
echo a >a && echo a >a &&
echo z >z && echo z >z &&
git add a init z && git add a init z &&
git-commit -m "super commit 1" && git commit -m "super commit 1" &&
mv init .subrepo && mv init .subrepo &&
GIT_CONFIG=.gitmodules git config submodule.example.url git://example.com/init.git GIT_CONFIG=.gitmodules git config submodule.example.url git://example.com/init.git
' '
test_expect_success 'status should fail for unmapped paths' ' test_expect_success 'status should fail for unmapped paths' '
if git-submodule status if git submodule status
then then
echo "[OOPS] submodule status succeeded" echo "[OOPS] submodule status succeeded"
false false
@ -60,16 +60,16 @@ test_expect_success 'status should fail for unmapped paths' '
' '
test_expect_success 'status should only print one line' ' test_expect_success 'status should only print one line' '
lines=$(git-submodule status | wc -l) && lines=$(git submodule status | wc -l) &&
test $lines = 1 test $lines = 1
' '
test_expect_success 'status should initially be "missing"' ' test_expect_success 'status should initially be "missing"' '
git-submodule status | grep "^-$rev1" git submodule status | grep "^-$rev1"
' '
test_expect_success 'init should register submodule url in .git/config' ' test_expect_success 'init should register submodule url in .git/config' '
git-submodule init && git submodule init &&
url=$(git config submodule.example.url) && url=$(git config submodule.example.url) &&
if test "$url" != "git://example.com/init.git" if test "$url" != "git://example.com/init.git"
then then
@ -84,7 +84,7 @@ test_expect_success 'init should register submodule url in .git/config' '
test_expect_success 'update should fail when path is used by a file' ' test_expect_success 'update should fail when path is used by a file' '
echo "hello" >init && echo "hello" >init &&
if git-submodule update if git submodule update
then then
echo "[OOPS] update should have failed" echo "[OOPS] update should have failed"
false false
@ -100,7 +100,7 @@ test_expect_success 'update should fail when path is used by a file' '
test_expect_success 'update should fail when path is used by a nonempty directory' ' test_expect_success 'update should fail when path is used by a nonempty directory' '
mkdir init && mkdir init &&
echo "hello" >init/a && echo "hello" >init/a &&
if git-submodule update if git submodule update
then then
echo "[OOPS] update should have failed" echo "[OOPS] update should have failed"
false false
@ -116,7 +116,7 @@ test_expect_success 'update should fail when path is used by a nonempty director
test_expect_success 'update should work when path is an empty dir' ' test_expect_success 'update should work when path is an empty dir' '
rm -rf init && rm -rf init &&
mkdir init && mkdir init &&
git-submodule update && git submodule update &&
head=$(cd init && git rev-parse HEAD) && head=$(cd init && git rev-parse HEAD) &&
if test -z "$head" if test -z "$head"
then then
@ -130,14 +130,14 @@ test_expect_success 'update should work when path is an empty dir' '
' '
test_expect_success 'status should be "up-to-date" after update' ' test_expect_success 'status should be "up-to-date" after update' '
git-submodule status | grep "^ $rev1" git submodule status | grep "^ $rev1"
' '
test_expect_success 'status should be "modified" after submodule commit' ' test_expect_success 'status should be "modified" after submodule commit' '
cd init && cd init &&
echo b >b && echo b >b &&
git add b && git add b &&
git-commit -m "submodule commit 2" && git commit -m "submodule commit 2" &&
rev2=$(git rev-parse HEAD) && rev2=$(git rev-parse HEAD) &&
cd .. && cd .. &&
if test -z "$rev2" if test -z "$rev2"
@ -145,19 +145,19 @@ test_expect_success 'status should be "modified" after submodule commit' '
echo "[OOPS] submodule git rev-parse returned nothing" echo "[OOPS] submodule git rev-parse returned nothing"
false false
fi && fi &&
git-submodule status | grep "^+$rev2" git submodule status | grep "^+$rev2"
' '
test_expect_success 'the --cached sha1 should be rev1' ' test_expect_success 'the --cached sha1 should be rev1' '
git-submodule --cached status | grep "^+$rev1" git submodule --cached status | grep "^+$rev1"
' '
test_expect_success 'git diff should report the SHA1 of the new submodule commit' ' test_expect_success 'git diff should report the SHA1 of the new submodule commit' '
git-diff | grep "^+Subproject commit $rev2" git diff | grep "^+Subproject commit $rev2"
' '
test_expect_success 'update should checkout rev1' ' test_expect_success 'update should checkout rev1' '
git-submodule update init && git submodule update init &&
head=$(cd init && git rev-parse HEAD) && head=$(cd init && git rev-parse HEAD) &&
if test -z "$head" if test -z "$head"
then then
@ -171,12 +171,12 @@ test_expect_success 'update should checkout rev1' '
' '
test_expect_success 'status should be "up-to-date" after update' ' test_expect_success 'status should be "up-to-date" after update' '
git-submodule status | grep "^ $rev1" git submodule status | grep "^ $rev1"
' '
test_expect_success 'checkout superproject with subproject already present' ' test_expect_success 'checkout superproject with subproject already present' '
git-checkout initial && git checkout initial &&
git-checkout master git checkout master
' '
test_expect_success 'apply submodule diff' ' test_expect_success 'apply submodule diff' '
@ -188,8 +188,8 @@ test_expect_success 'apply submodule diff' '
git commit -m "change subproject" git commit -m "change subproject"
) && ) &&
git update-index --add init && git update-index --add init &&
git-commit -m "change init" && git commit -m "change init" &&
git-format-patch -1 --stdout >P.diff && git format-patch -1 --stdout >P.diff &&
git checkout second && git checkout second &&
git apply --index P.diff && git apply --index P.diff &&
D=$(git diff --cached master) && D=$(git diff --cached master) &&

View File

@ -5,7 +5,7 @@
test_description='Summary support for submodules test_description='Summary support for submodules
This test tries to verify the sanity of summary subcommand of git-submodule. This test tries to verify the sanity of summary subcommand of git submodule.
' '
. ./test-lib.sh . ./test-lib.sh

View File

@ -3,7 +3,7 @@
# Copyright (c) 2007 Steven Grimm # Copyright (c) 2007 Steven Grimm
# #
test_description='git-commit test_description='git commit
Tests for selected commit options.' Tests for selected commit options.'

View File

@ -6,7 +6,7 @@
# FIXME: Test the various index usages, -i and -o, test reflog, # FIXME: Test the various index usages, -i and -o, test reflog,
# signoff # signoff
test_description='git-commit' test_description='git commit'
. ./test-lib.sh . ./test-lib.sh
test_tick test_tick
@ -14,52 +14,52 @@ test_tick
test_expect_success \ test_expect_success \
"initial status" \ "initial status" \
"echo 'bongo bongo' >file && "echo 'bongo bongo' >file &&
git-add file && \ git add file && \
git-status | grep 'Initial commit'" git status | grep 'Initial commit'"
test_expect_success \ test_expect_success \
"fail initial amend" \ "fail initial amend" \
"test_must_fail git-commit --amend" "test_must_fail git commit --amend"
test_expect_success \ test_expect_success \
"initial commit" \ "initial commit" \
"git-commit -m initial" "git commit -m initial"
test_expect_success \ test_expect_success \
"invalid options 1" \ "invalid options 1" \
"test_must_fail git-commit -m foo -m bar -F file" "test_must_fail git commit -m foo -m bar -F file"
test_expect_success \ test_expect_success \
"invalid options 2" \ "invalid options 2" \
"test_must_fail git-commit -C HEAD -m illegal" "test_must_fail git commit -C HEAD -m illegal"
test_expect_success \ test_expect_success \
"using paths with -a" \ "using paths with -a" \
"echo King of the bongo >file && "echo King of the bongo >file &&
test_must_fail git-commit -m foo -a file" test_must_fail git commit -m foo -a file"
test_expect_success \ test_expect_success \
"using paths with --interactive" \ "using paths with --interactive" \
"echo bong-o-bong >file && "echo bong-o-bong >file &&
! (echo 7 | git-commit -m foo --interactive file)" ! (echo 7 | git commit -m foo --interactive file)"
test_expect_success \ test_expect_success \
"using invalid commit with -C" \ "using invalid commit with -C" \
"test_must_fail git-commit -C bogus" "test_must_fail git commit -C bogus"
test_expect_success \ test_expect_success \
"testing nothing to commit" \ "testing nothing to commit" \
"test_must_fail git-commit -m initial" "test_must_fail git commit -m initial"
test_expect_success \ test_expect_success \
"next commit" \ "next commit" \
"echo 'bongo bongo bongo' >file \ "echo 'bongo bongo bongo' >file \
git-commit -m next -a" git commit -m next -a"
test_expect_success \ test_expect_success \
"commit message from non-existing file" \ "commit message from non-existing file" \
"echo 'more bongo: bongo bongo bongo bongo' >file && \ "echo 'more bongo: bongo bongo bongo bongo' >file && \
test_must_fail git-commit -F gah -a" test_must_fail git commit -F gah -a"
# Empty except stray tabs and spaces on a few lines. # Empty except stray tabs and spaces on a few lines.
sed -e 's/@$//' >msg <<EOF sed -e 's/@$//' >msg <<EOF
@ -70,12 +70,12 @@ Signed-off-by: hula
EOF EOF
test_expect_success \ test_expect_success \
"empty commit message" \ "empty commit message" \
"test_must_fail git-commit -F msg -a" "test_must_fail git commit -F msg -a"
test_expect_success \ test_expect_success \
"commit message from file" \ "commit message from file" \
"echo 'this is the commit message, coming from a file' >msg && \ "echo 'this is the commit message, coming from a file' >msg && \
git-commit -F msg -a" git commit -F msg -a"
cat >editor <<\EOF cat >editor <<\EOF
#!/bin/sh #!/bin/sh
@ -86,16 +86,16 @@ chmod 755 editor
test_expect_success \ test_expect_success \
"amend commit" \ "amend commit" \
"VISUAL=./editor git-commit --amend" "VISUAL=./editor git commit --amend"
test_expect_success \ test_expect_success \
"passing -m and -F" \ "passing -m and -F" \
"echo 'enough with the bongos' >file && \ "echo 'enough with the bongos' >file && \
test_must_fail git-commit -F msg -m amending ." test_must_fail git commit -F msg -m amending ."
test_expect_success \ test_expect_success \
"using message from other commit" \ "using message from other commit" \
"git-commit -C HEAD^ ." "git commit -C HEAD^ ."
cat >editor <<\EOF cat >editor <<\EOF
#!/bin/sh #!/bin/sh
@ -107,25 +107,25 @@ chmod 755 editor
test_expect_success \ test_expect_success \
"editing message from other commit" \ "editing message from other commit" \
"echo 'hula hula' >file && \ "echo 'hula hula' >file && \
VISUAL=./editor git-commit -c HEAD^ -a" VISUAL=./editor git commit -c HEAD^ -a"
test_expect_success \ test_expect_success \
"message from stdin" \ "message from stdin" \
"echo 'silly new contents' >file && \ "echo 'silly new contents' >file && \
echo commit message from stdin | git-commit -F - -a" echo commit message from stdin | git commit -F - -a"
test_expect_success \ test_expect_success \
"overriding author from command line" \ "overriding author from command line" \
"echo 'gak' >file && \ "echo 'gak' >file && \
git-commit -m 'author' --author 'Rubber Duck <rduck@convoy.org>' -a" git commit -m 'author' --author 'Rubber Duck <rduck@convoy.org>' -a"
test_expect_success \ test_expect_success \
"interactive add" \ "interactive add" \
"echo 7 | git-commit --interactive | grep 'What now'" "echo 7 | git commit --interactive | grep 'What now'"
test_expect_success \ test_expect_success \
"showing committed revisions" \ "showing committed revisions" \
"git-rev-list HEAD >current" "git rev-list HEAD >current"
# We could just check the head sha1, but checking each commit makes it # We could just check the head sha1, but checking each commit makes it
# easier to isolate bugs. # easier to isolate bugs.
@ -140,7 +140,7 @@ d381ac431806e53f3dd7ac2f1ae0534f36d738b9
EOF EOF
test_expect_success \ test_expect_success \
'validate git-rev-list output.' \ 'validate git rev-list output.' \
'diff current expected' 'diff current expected'
test_expect_success 'partial commit that involves removal (1)' ' test_expect_success 'partial commit that involves removal (1)' '

View File

@ -3,7 +3,7 @@
# Copyright (c) 2007 Johannes E. Schindelin # Copyright (c) 2007 Johannes E. Schindelin
# #
test_description='git-status' test_description='git status'
. ./test-lib.sh . ./test-lib.sh

View File

@ -32,7 +32,7 @@ echo "#!$SHELL_PATH" > "$HOOK"
cat >> "$HOOK" <<'EOF' cat >> "$HOOK" <<'EOF'
if test "$2" = commit; then if test "$2" = commit; then
source=$(git-rev-parse "$3") source=$(git rev-parse "$3")
else else
source=${2-default} source=${2-default}
fi fi

View File

@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
test_description='git-status for submodule' test_description='git status for submodule'
. ./test-lib.sh . ./test-lib.sh

View File

@ -3,7 +3,7 @@
# Copyright (c) 2007 Lars Hjemli # Copyright (c) 2007 Lars Hjemli
# #
test_description='git-merge test_description='git merge
Testing basic merge operations/option parsing.' Testing basic merge operations/option parsing.'

Some files were not shown because too many files have changed in this diff Show More