SYNOPSIS
--------
[synopsis]
-git last-modified [--recursive] [--show-trees] [<revision-range>] [[--] <path>...]
+git last-modified [--recursive] [--show-trees] [-z] [<revision-range>] [[--] <path>...]
DESCRIPTION
-----------
Show tree entries even when recursing into them. It has no effect
without `--recursive`.
+`-z`::
+ Terminate each line with a _NUL_ rather than a newline.
+
`<revision-range>`::
Only traverse commits in the specified revision range. When no
`<revision-range>` is specified, it defaults to `HEAD` (i.e. the whole
Without an optional path parameter, all files and subdirectories
in path traversal the are included in the output.
+OUTPUT
+------
+
+The output is in the format:
+
+------------
+ <oid> TAB <path> LF
+------------
+
+If a path contains any special characters, the path is C-style quoted. To
+avoid quoting, pass option `-z` to terminate each line with a NUL.
+
+------------
+ <oid> TAB <path> NUL
+------------
+
SEE ALSO
--------
linkgit:git-blame[1],
#define PARENT1 (1u<<16) /* used instead of SEEN */
#define PARENT2 (1u<<17) /* used instead of BOTTOM, BOUNDARY */
+#define LAST_MODIFIED_INIT { \
+ .line_termination = '\n', \
+}
+
struct last_modified_entry {
struct hashmap_entry hashent;
struct object_id oid;
struct rev_info rev;
bool recursive;
bool show_trees;
+ int line_termination;
const char **all_paths;
size_t all_paths_nr;
putchar('^');
printf("%s\t", oid_to_hex(&commit->object.oid));
- if (lm->rev.diffopt.line_termination)
+ if (lm->line_termination)
write_name_quoted(path, stdout, '\n');
else
printf("%s%c", path, '\0');
struct repository *repo)
{
int ret;
- struct last_modified lm = { 0 };
+ struct last_modified lm = LAST_MODIFIED_INIT;
const char * const last_modified_usage[] = {
- N_("git last-modified [--recursive] [--show-trees] "
+ N_("git last-modified [--recursive] [--show-trees] [-z] "
"[<revision-range>] [[--] <path>...]"),
NULL
};
N_("recurse into subtrees")),
OPT_BOOL('t', "show-trees", &lm.show_trees,
N_("show tree entries when recursing into subtrees")),
+ OPT_SET_INT('z', NULL, &lm.line_termination,
+ N_("lines are separated with NUL character"), '\0'),
OPT_END()
};