Skip to content
/ git Public
forked from git/git

Commit

Permalink
git reflog show
Browse files Browse the repository at this point in the history
It makes "git reflog [show]" act as

	git log -g --pretty=oneline --abbrev-cmit

and is fairly straightforward. So you can just write

	git reflog

or

	git reflog show

and it will show you the reflog in a nice format.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
  • Loading branch information
torvalds authored and Junio C Hamano committed Feb 8, 2007
1 parent 67dad68 commit cf39f54
Show file tree
Hide file tree
Showing 4 changed files with 58 additions and 10 deletions.
17 changes: 13 additions & 4 deletions Documentation/git-reflog.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,18 @@ git-reflog - Manage reflog information

SYNOPSIS
--------
[verse]
'git-reflog' expire [--dry-run] [--stale-fix]
[--expire=<time>] [--expire-unreachable=<time>] [--all] <refs>...

'git reflog' <subcommand> <options>

DESCRIPTION
-----------
The command takes various subcommands, and different options
depending on the subcommand:

[verse]
git reflog expire [--dry-run] [--stale-fix]
[--expire=<time>] [--expire-unreachable=<time>] [--all] <refs>...

git reflog [show] [log-options]

Reflog is a mechanism to record when the tip of branches are
updated. This command is to manage the information recorded in it.
Expand All @@ -25,6 +30,10 @@ Entries older than `expire` time, or entries older than
tip, are removed from the reflog. This is typically not used
directly by the end users -- instead, see gitlink:git-gc[1].

The subcommand "show" (which is also the default, in the absense of any
subcommands) will take all the normal log options, and show the log of
the current branch. It is basically an alias for 'git log -g --abbrev-commit
--pretty=oneline', see gitlink:git-log[1].


OPTIONS
Expand Down
32 changes: 32 additions & 0 deletions builtin-log.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
#include "log-tree.h"
#include "builtin.h"
#include "tag.h"
#include "reflog-walk.h"

static int default_show_root = 1;

Expand Down Expand Up @@ -181,6 +182,37 @@ int cmd_show(int argc, const char **argv, const char *prefix)
return ret;
}

/*
* This is equivalent to "git log -g --abbrev-commit --pretty=oneline"
*/
int cmd_log_reflog(int argc, const char **argv, const char *prefix)
{
struct rev_info rev;

git_config(git_log_config);
init_revisions(&rev, prefix);
init_reflog_walk(&rev.reflog_info);
rev.abbrev_commit = 1;
rev.verbose_header = 1;
cmd_log_init(argc, argv, prefix, &rev);

/*
* This means that we override whatever commit format the user gave
* on the cmd line. Sad, but cmd_log_init() currently doesn't
* allow us to set a different default.
*/
rev.commit_format = CMIT_FMT_ONELINE;
rev.always_show_header = 1;

/*
* We get called through "git reflog", so unlike the other log
* routines, we need to set up our pager manually..
*/
setup_pager();

return cmd_log_walk(&rev);
}

int cmd_log(int argc, const char **argv, const char *prefix)
{
struct rev_info rev;
Expand Down
18 changes: 12 additions & 6 deletions builtin-reflog.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
*/

static const char reflog_expire_usage[] =
"git-reflog expire [--verbose] [--dry-run] [--stale-fix] [--expire=<time>] [--expire-unreachable=<time>] [--all] <refs>...";
"git-reflog (show|expire) [--verbose] [--dry-run] [--stale-fix] [--expire=<time>] [--expire-unreachable=<time>] [--all] <refs>...";

static unsigned long default_reflog_expire;
static unsigned long default_reflog_expire_unreachable;
Expand Down Expand Up @@ -372,10 +372,16 @@ static const char reflog_usage[] =

int cmd_reflog(int argc, const char **argv, const char *prefix)
{
if (argc < 2)
usage(reflog_usage);
else if (!strcmp(argv[1], "expire"))
/* With no command, we default to showing it. */
if (argc < 2 || *argv[1] == '-')
return cmd_log_reflog(argc, argv, prefix);

if (!strcmp(argv[1], "show"))
return cmd_log_reflog(argc - 1, argv + 1, prefix);

if (!strcmp(argv[1], "expire"))
return cmd_reflog_expire(argc - 1, argv + 1, prefix);
else
usage(reflog_usage);

/* Not a recognized reflog command..*/
usage(reflog_usage);
}
1 change: 1 addition & 0 deletions builtin.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ extern int cmd_grep(int argc, const char **argv, const char *prefix);
extern int cmd_help(int argc, const char **argv, const char *prefix);
extern int cmd_init_db(int argc, const char **argv, const char *prefix);
extern int cmd_log(int argc, const char **argv, const char *prefix);
extern int cmd_log_reflog(int argc, const char **argv, const char *prefix);
extern int cmd_ls_files(int argc, const char **argv, const char *prefix);
extern int cmd_ls_tree(int argc, const char **argv, const char *prefix);
extern int cmd_mailinfo(int argc, const char **argv, const char *prefix);
Expand Down

0 comments on commit cf39f54

Please sign in to comment.