Merge branch 'master-for-junio' of git://repo.or.cz/git/fastimport; branch 'maint'

* 'master-for-junio' of git://repo.or.cz/git/fastimport:
  fast-import: Fail if a non-existant commit is used for merge
  fast-import: Avoid infinite loop after reset

* maint:
  Fix diff-options references in git-diff and git-format-patch
  Add definition of <commit-ish> to the main git man page.
  Begin SubmittingPatches with a check list
  fast-import: Fail if a non-existant commit is used for merge
  fast-import: Avoid infinite loop after reset
This commit is contained in:
Junio C Hamano 2007-03-05 21:23:46 -08:00
commit 99e6ac503b
5 changed files with 57 additions and 9 deletions

View file

@ -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 I started reading over the SubmittingPatches document for Linux
kernel, primarily because I wanted to have a document similar to kernel, primarily because I wanted to have a document similar to
it for the core GIT to make sure people understand what they are it for the core GIT to make sure people understand what they are

View file

@ -8,7 +8,7 @@ git-diff - Show changes between commits, commit and working tree, etc
SYNOPSIS SYNOPSIS
-------- --------
'git-diff' [ --diff-options ] <commit>{0,2} [--] [<path>...] 'git-diff' [<common diff options>] <commit>{0,2} [--] [<path>...]
DESCRIPTION DESCRIPTION
----------- -----------

View file

@ -9,8 +9,8 @@ git-format-patch - Prepare patches for e-mail submission
SYNOPSIS SYNOPSIS
-------- --------
[verse] [verse]
'git-format-patch' [-n | -k] [-o <dir> | --stdout] [--attach] [--thread] 'git-format-patch' [<common diff options>] [-n | -k] [-o <dir> | --stdout]
[-s | --signoff] [--diff-options] [--start-number <n>] [--attach] [--thread] [-s | --signoff] [--start-number <n>]
[--in-reply-to=Message-Id] [--suffix=.<sfx>] [--in-reply-to=Message-Id] [--suffix=.<sfx>]
[--ignore-if-in-upstream] [--ignore-if-in-upstream]
<since>[..<until>] <since>[..<until>]
@ -46,6 +46,8 @@ reference.
OPTIONS OPTIONS
------- -------
include::diff-options.txt[]
-o|--output-directory <dir>:: -o|--output-directory <dir>::
Use <dir> to store the resulting files, instead of the Use <dir> to store the resulting files, instead of the
current working directory. current working directory.

View file

@ -241,6 +241,12 @@ Identifier Terminology
operate on a <tree> object but automatically dereferences operate on a <tree> object but automatically dereferences
<commit> and <tag> objects that point at a <tree>. <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>:: <type>::
Indicates that an object type is required. Indicates that an object type is required.
Currently one of: `blob`, `tree`, `commit`, or `tag`. Currently one of: `blob`, `tree`, `commit`, or `tag`.

View file

@ -220,7 +220,8 @@ struct branch
const char *name; const char *name;
struct tree_entry branch_tree; struct tree_entry branch_tree;
uintmax_t last_commit; uintmax_t last_commit;
unsigned int pack_id; unsigned active : 1;
unsigned pack_id : PACK_ID_BITS;
unsigned char sha1[20]; unsigned char sha1[20];
}; };
@ -528,6 +529,7 @@ static struct branch *new_branch(const char *name)
b->table_next_branch = branch_table[hc]; b->table_next_branch = branch_table[hc];
b->branch_tree.versions[0].mode = S_IFDIR; b->branch_tree.versions[0].mode = S_IFDIR;
b->branch_tree.versions[1].mode = S_IFDIR; b->branch_tree.versions[1].mode = S_IFDIR;
b->active = 0;
b->pack_id = MAX_PACK_ID; b->pack_id = MAX_PACK_ID;
branch_table[hc] = b; branch_table[hc] = b;
branch_count++; branch_count++;
@ -1547,6 +1549,7 @@ static void unload_one_branch(void)
e = active_branches; e = active_branches;
active_branches = e->active_next_branch; active_branches = e->active_next_branch;
} }
e->active = 0;
e->active_next_branch = NULL; e->active_next_branch = NULL;
if (e->branch_tree.tree) { if (e->branch_tree.tree) {
release_tree_content_recursive(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) static void load_branch(struct branch *b)
{ {
load_tree(&b->branch_tree); load_tree(&b->branch_tree);
b->active_next_branch = active_branches; if (!b->active) {
active_branches = b; b->active = 1;
cur_active_branches++; b->active_next_branch = active_branches;
branch_load_count++; active_branches = b;
cur_active_branches++;
branch_load_count++;
}
} }
static void file_change_m(struct branch *b) 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) if (oe->type != OBJ_COMMIT)
die("Mark :%" PRIuMAX " not a commit", idnum); die("Mark :%" PRIuMAX " not a commit", idnum);
hashcpy(n->sha1, oe->sha1); 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); die("Invalid ref name or SHA1 expression: %s", from);
n->next = NULL; n->next = NULL;