diff options
-rw-r--r-- | Documentation/git-clean.txt | 5 | ||||
-rw-r--r-- | Documentation/git-rev-list.txt | 7 | ||||
-rw-r--r-- | cat-file.c | 7 | ||||
-rw-r--r-- | commit-tree.c | 8 | ||||
-rw-r--r-- | config.c | 18 | ||||
-rw-r--r-- | convert-objects.c | 4 | ||||
-rw-r--r-- | describe.c | 6 | ||||
-rw-r--r-- | diff.c | 2 | ||||
-rwxr-xr-x | git-clean.sh | 17 | ||||
-rw-r--r-- | ls-tree.c | 4 | ||||
-rw-r--r-- | merge-base.c | 8 | ||||
-rw-r--r-- | merge-tree.c | 2 | ||||
-rw-r--r-- | read-tree.c | 4 | ||||
-rw-r--r-- | revision.c | 4 | ||||
-rw-r--r-- | ssh-upload.c | 2 | ||||
-rw-r--r-- | tar-tree.c | 4 | ||||
-rw-r--r-- | unpack-file.c | 4 | ||||
-rw-r--r-- | update-ref.c | 4 |
18 files changed, 64 insertions, 46 deletions
diff --git a/Documentation/git-clean.txt b/Documentation/git-clean.txt index 36890c543d..c61afbcdba 100644 --- a/Documentation/git-clean.txt +++ b/Documentation/git-clean.txt @@ -8,7 +8,7 @@ git-clean - Remove untracked files from the working tree SYNOPSIS -------- [verse] -'git-clean' [-d] [-n] [-q] [-x | -X] +'git-clean' [-d] [-n] [-q] [-x | -X] [--] <paths>... DESCRIPTION ----------- @@ -16,6 +16,9 @@ Removes files unknown to git. This allows to clean the working tree from files that are not under version control. If the '-x' option is specified, ignored files are also removed, allowing to remove all build products. +When optional `<paths>...` arguments are given, the paths +affected are further limited to those that match them. + OPTIONS ------- diff --git a/Documentation/git-rev-list.txt b/Documentation/git-rev-list.txt index 8255ae1bce..ad6d14c55a 100644 --- a/Documentation/git-rev-list.txt +++ b/Documentation/git-rev-list.txt @@ -68,9 +68,10 @@ OPTIONS --bisect:: Limit output to the one commit object which is roughly halfway between the included and excluded commits. Thus, if 'git-rev-list - --bisect foo ^bar ^baz' outputs 'midpoint', the output - of 'git-rev-list foo ^midpoint' and 'git-rev-list midpoint - ^bar ^baz' would be of roughly the same length. Finding the change + --bisect foo {caret}bar {caret}baz' outputs 'midpoint', the output + of 'git-rev-list foo {caret}midpoint' and 'git-rev-list midpoint + {caret}bar {caret}baz' would be of roughly the same length. + Finding the change which introduces a regression is thus reduced to a binary search: repeatedly generate and test new 'midpoint's until the commit chain is of length one. diff --git a/cat-file.c b/cat-file.c index 628f6cada8..7413feed78 100644 --- a/cat-file.c +++ b/cat-file.c @@ -103,8 +103,10 @@ int main(int argc, char **argv) setup_git_directory(); git_config(git_default_config); - if (argc != 3 || get_sha1(argv[2], sha1)) + if (argc != 3) usage("git-cat-file [-t|-s|-e|-p|<type>] <sha1>"); + if (get_sha1(argv[2], sha1)) + die("Not a valid object name %s", argv[2]); opt = 0; if ( argv[1][0] == '-' ) { @@ -133,8 +135,7 @@ int main(int argc, char **argv) return !has_sha1_file(sha1); case 'p': - if (get_sha1(argv[2], sha1) || - sha1_object_info(sha1, type, NULL)) + if (sha1_object_info(sha1, type, NULL)) die("Not a valid object name %s", argv[2]); /* custom pretty-print here */ diff --git a/commit-tree.c b/commit-tree.c index bad72e89e8..0320036e80 100644 --- a/commit-tree.c +++ b/commit-tree.c @@ -91,15 +91,19 @@ int main(int argc, char **argv) git_config(git_default_config); - if (argc < 2 || get_sha1(argv[1], tree_sha1) < 0) + if (argc < 2) usage(commit_tree_usage); + if (get_sha1(argv[1], tree_sha1)) + die("Not a valid object name %s", argv[1]); check_valid(tree_sha1, tree_type); for (i = 2; i < argc; i += 2) { char *a, *b; a = argv[i]; b = argv[i+1]; - if (!b || strcmp(a, "-p") || get_sha1(b, parent_sha1[parents])) + if (!b || strcmp(a, "-p")) usage(commit_tree_usage); + if (get_sha1(b, parent_sha1[parents])) + die("Not a valid object name %s", b); check_valid(parent_sha1[parents], commit_type); if (new_parent(parents)) parents++; @@ -422,7 +422,7 @@ int git_config_set_multivar(const char* key, const char* value, const char* value_regex, int multi_replace) { int i; - int fd, in_fd; + int fd = -1, in_fd; int ret; char* config_filename = strdup(git_path("config")); char* lock_file = strdup(git_path("config.lock")); @@ -480,15 +480,11 @@ int git_config_set_multivar(const char* key, const char* value, if ( ENOENT != errno ) { error("opening %s: %s", config_filename, strerror(errno)); - close(fd); - unlink(lock_file); ret = 3; /* same as "invalid config file" */ goto out_free; } /* if nothing to unset, error out */ if (value == NULL) { - close(fd); - unlink(lock_file); ret = 5; goto out_free; } @@ -516,8 +512,6 @@ int git_config_set_multivar(const char* key, const char* value, fprintf(stderr, "Invalid pattern: %s\n", value_regex); free(store.value_regex); - close(fd); - unlink(lock_file); ret = 6; goto out_free; } @@ -553,8 +547,6 @@ int git_config_set_multivar(const char* key, const char* value, /* if nothing to unset, or too many matches, error out */ if ((store.seen == 0 && value == NULL) || (store.seen > 1 && multi_replace == 0)) { - close(fd); - unlink(lock_file); ret = 5; goto out_free; } @@ -603,8 +595,6 @@ int git_config_set_multivar(const char* key, const char* value, unlink(config_filename); } - close(fd); - if (rename(lock_file, config_filename) < 0) { fprintf(stderr, "Could not rename the lock file?\n"); ret = 4; @@ -614,10 +604,14 @@ int git_config_set_multivar(const char* key, const char* value, ret = 0; out_free: + if (0 <= fd) + close(fd); if (config_filename) free(config_filename); - if (lock_file) + if (lock_file) { + unlink(lock_file); free(lock_file); + } return ret; } diff --git a/convert-objects.c b/convert-objects.c index 12aacef5a9..a67d6b479e 100644 --- a/convert-objects.c +++ b/convert-objects.c @@ -321,8 +321,10 @@ int main(int argc, char **argv) setup_git_directory(); - if (argc != 2 || get_sha1(argv[1], sha1)) + if (argc != 2) usage("git-convert-objects <sha1>"); + if (get_sha1(argv[1], sha1)) + die("Not a valid object name %s", argv[1]); entry = convert_entry(sha1); printf("new sha1: %s\n", sha1_to_hex(entry->new_sha1)); diff --git a/describe.c b/describe.c index ff65742615..8a9cd5d52c 100644 --- a/describe.c +++ b/describe.c @@ -105,11 +105,11 @@ static void describe(char *arg, int last_one) static int initialized = 0; struct commit_name *n; - if (get_sha1(arg, sha1) < 0) - usage(describe_usage); + if (get_sha1(arg, sha1)) + die("Not a valid object name %s", arg); cmit = lookup_commit_reference(sha1); if (!cmit) - usage(describe_usage); + die("%s is not a valid '%s' object", arg, commit_type); if (!initialized) { initialized = 1; @@ -297,7 +297,6 @@ static const char minuses[]= "-------------------------------------------------- static void show_stats(struct diffstat_t* data) { - char *prefix = ""; int i, len, add, del, total, adds = 0, dels = 0; int max, max_change = 0, max_len = 0; int total_files = data->nr; @@ -319,6 +318,7 @@ static void show_stats(struct diffstat_t* data) } for (i = 0; i < data->nr; i++) { + char *prefix = ""; char *name = data->files[i]->name; int added = data->files[i]->added; int deleted = data->files[i]->deleted; diff --git a/git-clean.sh b/git-clean.sh index b200868e60..bb56264e04 100755 --- a/git-clean.sh +++ b/git-clean.sh @@ -3,13 +3,15 @@ # Copyright (c) 2005-2006 Pavel Roskin # -USAGE="[-d] [-n] [-q] [-x | -X]" +USAGE="[-d] [-n] [-q] [-x | -X] [--] <paths>..." LONG_USAGE='Clean untracked files from the working directory -d remove directories as well -n don'\''t remove anything, just show what would be done -q be quiet, only report errors -x remove ignored files as well - -X remove only ignored files as well' + -X remove only ignored files +When optional <paths>... arguments are given, the paths +affected are further limited to those that match them.' SUBDIRECTORY_OK=Yes . git-sh-setup @@ -44,8 +46,15 @@ do -X) ignoredonly=1 ;; - *) + --) + shift + break + ;; + -*) usage + ;; + *) + break esac shift done @@ -64,7 +73,7 @@ if [ -z "$ignored" ]; then fi fi -git-ls-files --others --directory $excl ${excl_info:+"$excl_info"} | +git-ls-files --others --directory $excl ${excl_info:+"$excl_info"} -- "$@" | while read -r file; do if [ -d "$file" -a ! -L "$file" ]; then if [ -z "$cleandir" ]; then @@ -142,8 +142,8 @@ int main(int argc, const char **argv) if (argc < 2) usage(ls_tree_usage); - if (get_sha1(argv[1], sha1) < 0) - usage(ls_tree_usage); + if (get_sha1(argv[1], sha1)) + die("Not a valid object name %s", argv[1]); pathspec = get_pathspec(prefix, argv + 2); tree = parse_tree_indirect(sha1); diff --git a/merge-base.c b/merge-base.c index 07f5ab4d1c..f0dc06ef55 100644 --- a/merge-base.c +++ b/merge-base.c @@ -247,10 +247,12 @@ int main(int argc, char **argv) usage(merge_base_usage); argc--; argv++; } - if (argc != 3 || - get_sha1(argv[1], rev1key) || - get_sha1(argv[2], rev2key)) + if (argc != 3) usage(merge_base_usage); + if (get_sha1(argv[1], rev1key)) + die("Not a valid object name %s", argv[1]); + if (get_sha1(argv[2], rev2key)) + die("Not a valid object name %s", argv[2]); rev1 = lookup_commit_reference(rev1key); rev2 = lookup_commit_reference(rev2key); if (!rev1 || !rev2) diff --git a/merge-tree.c b/merge-tree.c index cc7b5bd891..9dcaab7a85 100644 --- a/merge-tree.c +++ b/merge-tree.c @@ -149,7 +149,7 @@ static void *get_tree_descriptor(struct tree_desc *desc, const char *rev) unsigned char sha1[20]; void *buf; - if (get_sha1(rev, sha1) < 0) + if (get_sha1(rev, sha1)) die("unknown rev %s", rev); buf = fill_tree_descriptor(desc, sha1); if (!buf) diff --git a/read-tree.c b/read-tree.c index 5d30464106..c25385d79f 100644 --- a/read-tree.c +++ b/read-tree.c @@ -880,8 +880,8 @@ int main(int argc, char **argv) if (1 < index_only + update) usage(read_tree_usage); - if (get_sha1(arg, sha1) < 0) - usage(read_tree_usage); + if (get_sha1(arg, sha1)) + die("Not a valid object name %s", arg); if (list_tree(sha1) < 0) die("failed to unpack tree object %s", arg); stage++; diff --git a/revision.c b/revision.c index f8ee38e54d..2294b16ea2 100644 --- a/revision.c +++ b/revision.c @@ -794,7 +794,7 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch local_flags = UNINTERESTING; arg++; } - if (get_sha1(arg, sha1) < 0) { + if (get_sha1(arg, sha1)) { int j; if (seen_dashdash || local_flags) @@ -820,7 +820,7 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch if (def && !revs->pending_objects) { unsigned char sha1[20]; struct object *object; - if (get_sha1(def, sha1) < 0) + if (get_sha1(def, sha1)) die("bad default revision '%s'", def); object = get_reference(revs, def, sha1, 0); add_pending_object(revs, object, def); diff --git a/ssh-upload.c b/ssh-upload.c index b675a0b1f1..2da66618fc 100644 --- a/ssh-upload.c +++ b/ssh-upload.c @@ -134,7 +134,7 @@ int main(int argc, char **argv) commit_id = argv[arg]; url = argv[arg + 1]; if (get_sha1(commit_id, sha1)) - usage(ssh_push_usage); + die("Not a valid object name %s", commit_id); memcpy(hex, sha1_to_hex(sha1), sizeof(hex)); argv[arg] = hex; diff --git a/tar-tree.c b/tar-tree.c index fc60a90873..33087366c3 100644 --- a/tar-tree.c +++ b/tar-tree.c @@ -321,8 +321,8 @@ int main(int argc, char **argv) strbuf_append_string(¤t_path, "/"); /* FALLTHROUGH */ case 2: - if (get_sha1(argv[1], sha1) < 0) - usage(tar_tree_usage); + if (get_sha1(argv[1], sha1)) + die("Not a valid object name %s", argv[1]); break; default: usage(tar_tree_usage); diff --git a/unpack-file.c b/unpack-file.c index 23a8562301..ccddf1d4b0 100644 --- a/unpack-file.c +++ b/unpack-file.c @@ -27,8 +27,10 @@ int main(int argc, char **argv) { unsigned char sha1[20]; - if (argc != 2 || get_sha1(argv[1], sha1)) + if (argc != 2) usage("git-unpack-file <sha1>"); + if (get_sha1(argv[1], sha1)) + die("Not a valid object name %s", argv[1]); setup_git_directory(); git_config(git_default_config); diff --git a/update-ref.c b/update-ref.c index ba4bf5153e..fd487421cd 100644 --- a/update-ref.c +++ b/update-ref.c @@ -32,10 +32,10 @@ int main(int argc, char **argv) refname = argv[1]; value = argv[2]; oldval = argv[3]; - if (get_sha1(value, sha1) < 0) + if (get_sha1(value, sha1)) die("%s: not a valid SHA1", value); memset(oldsha1, 0, 20); - if (oldval && get_sha1(oldval, oldsha1) < 0) + if (oldval && get_sha1(oldval, oldsha1)) die("%s: not a valid old SHA1", oldval); path = resolve_ref(git_path("%s", refname), currsha1, !!oldval); |