Skip to content

Commit

Permalink
Merge branch 'jh/notes'
Browse files Browse the repository at this point in the history
* jh/notes: (33 commits)
  Documentation: fix a few typos in git-notes.txt
  notes: fix malformed tree entry
  builtin-notes: Minor (mostly parse_options-related) fixes
  builtin-notes: Add "copy" subcommand for copying notes between objects
  builtin-notes: Misc. refactoring of argc and exit value handling
  builtin-notes: Add -c/-C options for reusing notes
  builtin-notes: Refactor handling of -F option to allow combining -m and -F
  builtin-notes: Deprecate the -m/-F options for "git notes edit"
  builtin-notes: Add "append" subcommand for appending to note objects
  builtin-notes: Add "add" subcommand for adding notes to objects
  builtin-notes: Add --message/--file aliases for -m/-F options
  builtin-notes: Add "list" subcommand for listing note objects
  Documentation: Generalize git-notes docs to 'objects' instead of 'commits'
  builtin-notes: Add "prune" subcommand for removing notes for missing objects
  Notes API: prune_notes(): Prune notes that belong to non-existing objects
  t3305: Verify that removing notes triggers automatic fanout consolidation
  builtin-notes: Add "remove" subcommand for removing existing notes
  Teach builtin-notes to remove empty notes
  Teach notes code to properly preserve non-notes in the notes tree
  t3305: Verify that adding many notes with git-notes triggers increased fanout
  ...

Conflicts:
	Makefile
  • Loading branch information
Junio C Hamano committed Mar 15, 2010
2 parents 3a27f41 + 48716a2 commit 2949151
Show file tree
Hide file tree
Showing 14 changed files with 2,167 additions and 196 deletions.
91 changes: 73 additions & 18 deletions Documentation/git-notes.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,57 +3,112 @@ git-notes(1)

NAME
----
git-notes - Add/inspect commit notes
git-notes - Add/inspect object notes

SYNOPSIS
--------
[verse]
'git notes' (edit [-F <file> | -m <msg>] | show) [commit]
'git notes' [list [<object>]]
'git notes' add [-f] [-F <file> | -m <msg> | (-c | -C) <object>] [<object>]
'git notes' copy [-f] <from-object> <to-object>
'git notes' append [-F <file> | -m <msg> | (-c | -C) <object>] [<object>]
'git notes' edit [<object>]
'git notes' show [<object>]
'git notes' remove [<object>]
'git notes' prune


DESCRIPTION
-----------
This command allows you to add notes to commit messages, without
changing the commit. To discern these notes from the message stored
in the commit object, the notes are indented like the message, after
an unindented line saying "Notes:".
This command allows you to add/remove notes to/from objects, without
changing the objects themselves.

A typical use of notes is to extend a commit message without having
to change the commit itself. Such commit notes can be shown by `git log`
along with the original commit message. To discern these notes from the
message stored in the commit object, the notes are indented like the
message, after an unindented line saying "Notes:".

To disable commit notes, you have to set the config variable
core.notesRef to the empty string. Alternatively, you can set it
to a different ref, something like "refs/notes/bugzilla". This setting
can be overridden by the environment variable "GIT_NOTES_REF".
To disable notes, you have to set the config variable core.notesRef to
the empty string. Alternatively, you can set it to a different ref,
something like "refs/notes/bugzilla". This setting can be overridden
by the environment variable "GIT_NOTES_REF".


SUBCOMMANDS
-----------

list::
List the notes object for a given object. If no object is
given, show a list of all note objects and the objects they
annotate (in the format "<note object> <annotated object>").
This is the default subcommand if no subcommand is given.

add::
Add notes for a given object (defaults to HEAD). Abort if the
object already has notes (use `-f` to overwrite an
existing note).

copy::
Copy the notes for the first object onto the second object.
Abort if the second object already has notes, or if the first
object has none (use -f to overwrite existing notes to the
second object). This subcommand is equivalent to:
`git notes add [-f] -C $(git notes list <from-object>) <to-object>`

append::
Append to the notes of an existing object (defaults to HEAD).
Creates a new notes object if needed.

edit::
Edit the notes for a given commit (defaults to HEAD).
Edit the notes for a given object (defaults to HEAD).

show::
Show the notes for a given commit (defaults to HEAD).
Show the notes for a given object (defaults to HEAD).

remove::
Remove the notes for a given object (defaults to HEAD).
This is equivalent to specifying an empty note message to
the `edit` subcommand.

prune::
Remove all notes for non-existing/unreachable objects.

OPTIONS
-------
-f::
--force::
When adding notes to an object that already has notes,
overwrite the existing notes (instead of aborting).

-m <msg>::
--message=<msg>::
Use the given note message (instead of prompting).
If multiple `-m` (or `-F`) options are given, their
values are concatenated as separate paragraphs.
If multiple `-m` options are given, their values
are concatenated as separate paragraphs.

-F <file>::
--file=<file>::
Take the note message from the given file. Use '-' to
read the note message from the standard input.
If multiple `-F` (or `-m`) options are given, their
values are concatenated as separate paragraphs.

-C <object>::
--reuse-message=<object>::
Reuse the note message from the given note object.

-c <object>::
--reedit-message=<object>::
Like '-C', but with '-c' the editor is invoked, so that
the user can further edit the note message.

Author
------
Written by Johannes Schindelin <johannes.schindelin@gmx.de>
Written by Johannes Schindelin <johannes.schindelin@gmx.de> and
Johan Herland <johan@herland.net>

Documentation
-------------
Documentation by Johannes Schindelin
Documentation by Johannes Schindelin and Johan Herland

GIT
---
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -335,7 +335,6 @@ SCRIPT_SH += git-merge-octopus.sh
SCRIPT_SH += git-merge-one-file.sh
SCRIPT_SH += git-merge-resolve.sh
SCRIPT_SH += git-mergetool.sh
SCRIPT_SH += git-notes.sh
SCRIPT_SH += git-pull.sh
SCRIPT_SH += git-quiltimport.sh
SCRIPT_SH += git-rebase--interactive.sh
Expand Down Expand Up @@ -677,6 +676,7 @@ BUILTIN_OBJS += builtin/mktag.o
BUILTIN_OBJS += builtin/mktree.o
BUILTIN_OBJS += builtin/mv.o
BUILTIN_OBJS += builtin/name-rev.o
BUILTIN_OBJS += builtin/notes.o
BUILTIN_OBJS += builtin/pack-objects.o
BUILTIN_OBJS += builtin/pack-redundant.o
BUILTIN_OBJS += builtin/pack-refs.o
Expand Down
3 changes: 3 additions & 0 deletions builtin.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
#include "strbuf.h"
#include "cache.h"
#include "commit.h"
#include "notes.h"

extern const char git_version_string[];
extern const char git_usage_string[];
Expand All @@ -18,6 +19,7 @@ extern int fmt_merge_msg(int merge_summary, struct strbuf *in,
extern int commit_tree(const char *msg, unsigned char *tree,
struct commit_list *parents, unsigned char *ret,
const char *author);
extern int commit_notes(struct notes_tree *t, const char *msg);
extern int check_pager_config(const char *cmd);

extern int cmd_add(int argc, const char **argv, const char *prefix);
Expand Down Expand Up @@ -78,6 +80,7 @@ extern int cmd_mktag(int argc, const char **argv, const char *prefix);
extern int cmd_mktree(int argc, const char **argv, const char *prefix);
extern int cmd_mv(int argc, const char **argv, const char *prefix);
extern int cmd_name_rev(int argc, const char **argv, const char *prefix);
extern int cmd_notes(int argc, const char **argv, const char *prefix);
extern int cmd_pack_objects(int argc, const char **argv, const char *prefix);
extern int cmd_pack_redundant(int argc, const char **argv, const char *prefix);
extern int cmd_patch_id(int argc, const char **argv, const char *prefix);
Expand Down
Loading

0 comments on commit 2949151

Please sign in to comment.