author | Junio C Hamano <junkio@cox.net> | |
Fri, 21 Apr 2006 20:19:58 +0000 (13:19 -0700) | ||
committer | Junio C Hamano <junkio@cox.net> | |
Fri, 21 Apr 2006 20:25:47 +0000 (13:25 -0700) |
* master:
Split up builtin commands into separate files from git.c
git-log produces no output
fix pack-object buffer size
mailinfo: decode underscore used in "Q" encoding properly.
Reintroduce svn pools to solve the memory leak.
pack-objects: do not stop at object that is "too small"
git-commit --amend: two fixes.
get_tree_entry(): make it available from tree-walk
sha1_name.c: no need to include diff.h; tree-walk.h will do.
sha1_name.c: prepare to make get_tree_entry() reusable from others.
get_sha1() shorthands for blob/tree objects
pre-commit hook: complain about conflict markers.
git-merge: a bit more readable user guidance.
diff: move diff.c to diff-lib.c to make room.
git log: don't do merge diffs by default
Allow "git repack" users to specify repacking window/depth
Document git-clone --reference
Fix filename scaling for binary files
Fix uninteresting tags in new revision parsing
Conflicts:
Adjusted the addition of fmt-patch to match the recent split
from git.c to builtin.log.c.
Split up builtin commands into separate files from git.c
git-log produces no output
fix pack-object buffer size
mailinfo: decode underscore used in "Q" encoding properly.
Reintroduce svn pools to solve the memory leak.
pack-objects: do not stop at object that is "too small"
git-commit --amend: two fixes.
get_tree_entry(): make it available from tree-walk
sha1_name.c: no need to include diff.h; tree-walk.h will do.
sha1_name.c: prepare to make get_tree_entry() reusable from others.
get_sha1() shorthands for blob/tree objects
pre-commit hook: complain about conflict markers.
git-merge: a bit more readable user guidance.
diff: move diff.c to diff-lib.c to make room.
git log: don't do merge diffs by default
Allow "git repack" users to specify repacking window/depth
Document git-clone --reference
Fix filename scaling for binary files
Fix uninteresting tags in new revision parsing
Conflicts:
Adjusted the addition of fmt-patch to match the recent split
from git.c to builtin.log.c.
1 | 2 | |||
---|---|---|---|---|
builtin-log.c | patch | | | | diff2 | | blob | history |
builtin.h | patch | | | | diff2 | | blob | history |
git.c | patch | | diff1 | | diff2 | | blob | history |
diff --cc builtin-log.c
index 0000000000000000000000000000000000000000,69f2911cb4739ba211ac692ded2aa0a6d31cb989..a39aed6d86d77026c6178556ee59a05981d70776
mode 000000,100644..100644
mode 000000,100644..100644
--- /dev/null
--- 2/builtin-log.c
+++ b/builtin-log.c
+ /*
+ * Builtin "git log" and related commands (show, whatchanged)
+ *
+ * (C) Copyright 2006 Linus Torvalds
+ * 2006 Junio Hamano
+ */
+ #include "cache.h"
+ #include "commit.h"
+ #include "diff.h"
+ #include "revision.h"
+ #include "log-tree.h"
++#include "builtin.h"
+
+ static int cmd_log_wc(int argc, const char **argv, char **envp,
+ struct rev_info *rev)
+ {
+ struct commit *commit;
+
+ rev->abbrev = DEFAULT_ABBREV;
+ rev->commit_format = CMIT_FMT_DEFAULT;
+ rev->verbose_header = 1;
+ argc = setup_revisions(argc, argv, rev, "HEAD");
+
+ if (argc > 1)
+ die("unrecognized argument: %s", argv[1]);
+
+ prepare_revision_walk(rev);
+ setup_pager();
+ while ((commit = get_revision(rev)) != NULL) {
+ log_tree_commit(rev, commit);
+ free(commit->buffer);
+ commit->buffer = NULL;
+ }
+ return 0;
+ }
+
+ int cmd_whatchanged(int argc, const char **argv, char **envp)
+ {
+ struct rev_info rev;
+
+ init_revisions(&rev);
+ rev.diff = 1;
+ rev.diffopt.recursive = 1;
+ return cmd_log_wc(argc, argv, envp, &rev);
+ }
+
+ int cmd_show(int argc, const char **argv, char **envp)
+ {
+ struct rev_info rev;
+
+ init_revisions(&rev);
+ rev.diff = 1;
+ rev.diffopt.recursive = 1;
+ rev.combine_merges = 1;
+ rev.dense_combined_merges = 1;
+ rev.always_show_header = 1;
+ rev.ignore_merges = 0;
+ rev.no_walk = 1;
+ return cmd_log_wc(argc, argv, envp, &rev);
+ }
+
+ int cmd_log(int argc, const char **argv, char **envp)
+ {
+ struct rev_info rev;
+
+ init_revisions(&rev);
+ rev.always_show_header = 1;
+ rev.diffopt.recursive = 1;
+ return cmd_log_wc(argc, argv, envp, &rev);
+ }
++
++int cmd_format_patch(int argc, const char **argv, char **envp)
++{
++ struct commit *commit;
++ struct commit **list = NULL;
++ struct rev_info rev;
++ int nr = 0;
++
++ init_revisions(&rev);
++ rev.commit_format = CMIT_FMT_EMAIL;
++ rev.verbose_header = 1;
++ rev.diff = 1;
++ rev.diffopt.with_raw = 0;
++ rev.diffopt.with_stat = 1;
++ rev.combine_merges = 0;
++ rev.ignore_merges = 1;
++ rev.diffopt.output_format = DIFF_FORMAT_PATCH;
++ argc = setup_revisions(argc, argv, &rev, "HEAD");
++
++ prepare_revision_walk(&rev);
++ while ((commit = get_revision(&rev)) != NULL) {
++ nr++;
++ list = realloc(list, nr * sizeof(list[0]));
++ list[nr - 1] = commit;
++ }
++ while (0 <= --nr) {
++ int shown;
++ commit = list[nr];
++ shown = log_tree_commit(&rev, commit);
++ free(commit->buffer);
++ commit->buffer = NULL;
++ if (shown)
++ printf("-- \n%s\n\n", git_version_string);
++ }
++ free(list);
++ return 0;
++}
++
diff --cc builtin.h
index 0000000000000000000000000000000000000000,47408a0585d270c67edeb2edcd637c20e19beb34..94dc0732f9f42069f375673ce1b26aa0b43c26e6
mode 000000,100644..100644
mode 000000,100644..100644
--- /dev/null
+++ b/builtin.h
+ #ifndef BUILTIN_H
+ #define BUILTIN_H
+
+ #ifndef PATH_MAX
+ # define PATH_MAX 4096
+ #endif
+
+ extern const char git_version_string[];
+
+ void cmd_usage(int show_all, const char *exec_path, const char *fmt, ...)
+ #ifdef __GNUC__
+ __attribute__((__format__(__printf__, 3, 4), __noreturn__))
+ #endif
+ ;
+
+ extern int cmd_help(int argc, const char **argv, char **envp);
+ extern int cmd_version(int argc, const char **argv, char **envp);
+
+ extern int cmd_whatchanged(int argc, const char **argv, char **envp);
+ extern int cmd_show(int argc, const char **argv, char **envp);
+ extern int cmd_log(int argc, const char **argv, char **envp);
++extern int cmd_format_patch(int argc, const char **argv, char **envp);
+
+ #endif
diff --cc git.c
index d5aa41df92d72f1fb1b9b92c55ee4fae069b332e,aa2b814d9340839e587e39f45a2751c7eb0e1499..619c6654e45d0208adefc6aecf723c5c25fd4a7b
+++ b/git.c
{ "version", cmd_version },
{ "help", cmd_help },
{ "log", cmd_log },
- { "whatchanged", cmd_wc },
+ { "whatchanged", cmd_whatchanged },
{ "show", cmd_show },
+ { "fmt-patch", cmd_format_patch },
};
int i;