summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Documentation/SubmittingPatches27
-rw-r--r--Documentation/git-diff.txt2
-rw-r--r--Documentation/git-format-patch.txt6
-rw-r--r--Documentation/git.txt6
-rw-r--r--fast-import.c25
5 files changed, 57 insertions, 9 deletions
diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches
index 285781d9db..131bcff9b2 100644
--- a/Documentation/SubmittingPatches
+++ b/Documentation/SubmittingPatches
@@ -1,3 +1,30 @@
+Checklist (and a short version for the impatient):
+
+ - make commits of logical units
+ - check for unnecessary whitespace with "git diff --check"
+ before committing
+ - do not check in commented out code or unneeded files
+ - provide a meaningful commit message
+ - the first line of the commit message should be a short
+ description and should skip the full stop
+ - if you want your work included in git.git, add a
+ "Signed-off-by: Your Name <your@email.com>" line to the
+ commit message (or just use the option "-s" when
+ committing) to confirm that you agree to the Developer's
+ Certificate of Origin
+ - do not PGP sign your patch
+ - use "git format-patch -M" to create the patch
+ - do not attach your patch, but read in the mail
+ body, unless you cannot teach your mailer to
+ leave the formatting of the patch alone.
+ - be careful doing cut & paste into your mailer, not to
+ corrupt whitespaces.
+ - provide additional information (which is unsuitable for
+ the commit message) between the "---" and the diffstat
+ - send the patch to the list _and_ the maintainer
+
+Long version:
+
I started reading over the SubmittingPatches document for Linux
kernel, primarily because I wanted to have a document similar to
it for the core GIT to make sure people understand what they are
diff --git a/Documentation/git-diff.txt b/Documentation/git-diff.txt
index 12a531d1e9..044cee9b42 100644
--- a/Documentation/git-diff.txt
+++ b/Documentation/git-diff.txt
@@ -8,7 +8,7 @@ git-diff - Show changes between commits, commit and working tree, etc
SYNOPSIS
--------
-'git-diff' [ --diff-options ] <commit>{0,2} [--] [<path>...]
+'git-diff' [<common diff options>] <commit>{0,2} [--] [<path>...]
DESCRIPTION
-----------
diff --git a/Documentation/git-format-patch.txt b/Documentation/git-format-patch.txt
index 59f34b9f0d..84eabebe0b 100644
--- a/Documentation/git-format-patch.txt
+++ b/Documentation/git-format-patch.txt
@@ -9,8 +9,8 @@ git-format-patch - Prepare patches for e-mail submission
SYNOPSIS
--------
[verse]
-'git-format-patch' [-n | -k] [-o <dir> | --stdout] [--attach] [--thread]
- [-s | --signoff] [--diff-options] [--start-number <n>]
+'git-format-patch' [<common diff options>] [-n | -k] [-o <dir> | --stdout]
+ [--attach] [--thread] [-s | --signoff] [--start-number <n>]
[--in-reply-to=Message-Id] [--suffix=.<sfx>]
[--ignore-if-in-upstream]
<since>[..<until>]
@@ -46,6 +46,8 @@ reference.
OPTIONS
-------
+include::diff-options.txt[]
+
-o|--output-directory <dir>::
Use <dir> to store the resulting files, instead of the
current working directory.
diff --git a/Documentation/git.txt b/Documentation/git.txt
index 0577ad0a8c..e875e8318d 100644
--- a/Documentation/git.txt
+++ b/Documentation/git.txt
@@ -241,6 +241,12 @@ Identifier Terminology
operate on a <tree> object but automatically dereferences
<commit> and <tag> objects that point at a <tree>.
+<commit-ish>::
+ Indicates a commit or tag object name. A
+ command that takes a <commit-ish> argument ultimately wants to
+ operate on a <commit> object but automatically dereferences
+ <tag> objects that point at a <commit>.
+
<type>::
Indicates that an object type is required.
Currently one of: `blob`, `tree`, `commit`, or `tag`.
diff --git a/fast-import.c b/fast-import.c
index 65e99c2e8b..cc3347b23d 100644
--- a/fast-import.c
+++ b/fast-import.c
@@ -220,7 +220,8 @@ struct branch
const char *name;
struct tree_entry branch_tree;
uintmax_t last_commit;
- unsigned int pack_id;
+ unsigned active : 1;
+ unsigned pack_id : PACK_ID_BITS;
unsigned char sha1[20];
};
@@ -528,6 +529,7 @@ static struct branch *new_branch(const char *name)
b->table_next_branch = branch_table[hc];
b->branch_tree.versions[0].mode = S_IFDIR;
b->branch_tree.versions[1].mode = S_IFDIR;
+ b->active = 0;
b->pack_id = MAX_PACK_ID;
branch_table[hc] = b;
branch_count++;
@@ -1547,6 +1549,7 @@ static void unload_one_branch(void)
e = active_branches;
active_branches = e->active_next_branch;
}
+ e->active = 0;
e->active_next_branch = NULL;
if (e->branch_tree.tree) {
release_tree_content_recursive(e->branch_tree.tree);
@@ -1559,10 +1562,13 @@ static void unload_one_branch(void)
static void load_branch(struct branch *b)
{
load_tree(&b->branch_tree);
- b->active_next_branch = active_branches;
- active_branches = b;
- cur_active_branches++;
- branch_load_count++;
+ if (!b->active) {
+ b->active = 1;
+ b->active_next_branch = active_branches;
+ active_branches = b;
+ cur_active_branches++;
+ branch_load_count++;
+ }
}
static void file_change_m(struct branch *b)
@@ -1746,7 +1752,14 @@ static struct hash_list *cmd_merge(unsigned int *count)
if (oe->type != OBJ_COMMIT)
die("Mark :%" PRIuMAX " not a commit", idnum);
hashcpy(n->sha1, oe->sha1);
- } else if (get_sha1(from, n->sha1))
+ } else if (!get_sha1(from, n->sha1)) {
+ unsigned long size;
+ char *buf = read_object_with_reference(n->sha1,
+ commit_type, &size, n->sha1);
+ if (!buf || size < 46)
+ die("Not a valid commit: %s", from);
+ free(buf);
+ } else
die("Invalid ref name or SHA1 expression: %s", from);
n->next = NULL;