* [PATCH v2 0/5] builtin-status submodule summary @ 2008-03-14 15:28 Ping Yin 2008-03-14 15:28 ` [PATCH v2 1/5] git-submodule summary: --for-status option Ping Yin 2008-03-14 16:22 ` [PATCH v2 0/5] builtin-status submodule summary Johannes Sixt 0 siblings, 2 replies; 8+ messages in thread From: Ping Yin @ 2008-03-14 15:28 UTC (permalink / raw) To: gitster; +Cc: git IMO, git submodule summary is not so useful for me if it's not integrated into git-status. In fact i never use "git submodule summary" directly. git-status with submodule summary support is very useful to help user figure out what is going on in a more global level when cooking the commit message. So i think this series should go along with the submodule summary series. The v2 series has following commits adding a new commit for documentation git-submodule summary: --for-status option builtin-status: submodule summary support builtin-status: configurable submodule summary size buitin-status: Add tests for submodule summary git-status: Mention status.submodulesummary config in the documentation and diff relative to v1 is (not containing the documetation patch) diff --git a/t/t7502-status.sh b/t/t7502-status.sh index a4cd553..33882c9 100755 --- a/t/t7502-status.sh +++ b/t/t7502-status.sh @@ -187,9 +187,7 @@ test_expect_success "status submodule summary is disabled by default" ' git diff expect output ' -cd sm && -head=$(git rev-parse --verify HEAD | cut -c1-7) && -cd .. +head=$(cd sm && git rev-parse --short=7 --verify HEAD) cat > expect <<EOF # On branch master diff --git a/wt-status.c b/wt-status.c index c7cb69c..7a32c51 100644 --- a/wt-status.c +++ b/wt-status.c @@ -223,7 +223,7 @@ static void wt_status_print_changed(struct wt_status *s) } static void wt_status_print_submodule_summary(struct wt_status *s) { - if (wt_status_submodule_summary == 0) return; + if (! wt_status_submodule_summary) return; struct child_process sm_summary; char summary_limit[64]; sprintf(summary_limit, "%d", wt_status_submodule_summary); @@ -339,8 +339,6 @@ void wt_status_print(struct wt_status *s) } wt_status_print_changed(s); - // must flush s->fp since following call will write to s->fp in a child process - fflush(s->fp); wt_status_print_submodule_summary(s); wt_status_print_untracked(s); ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 1/5] git-submodule summary: --for-status option 2008-03-14 15:28 [PATCH v2 0/5] builtin-status submodule summary Ping Yin @ 2008-03-14 15:28 ` Ping Yin 2008-03-14 15:28 ` [PATCH v2 2/5] builtin-status: submodule summary support Ping Yin 2008-03-14 16:22 ` [PATCH v2 0/5] builtin-status submodule summary Johannes Sixt 1 sibling, 1 reply; 8+ messages in thread From: Ping Yin @ 2008-03-14 15:28 UTC (permalink / raw) To: gitster; +Cc: git, Ping Yin The --for-status option is mainly used by builtin-status/commit. It adds 'Modified submodules:' line at top and '# ' prefix to all following lines. Signed-off-by: Ping Yin <pkufranky@gmail.com> --- git-submodule.sh | 17 ++++++++++++++++- t/t7401-submodule-summary.sh | 13 +++++++++++++ 2 files changed, 29 insertions(+), 1 deletions(-) diff --git a/git-submodule.sh b/git-submodule.sh index 56ec353..d7937a5 100755 --- a/git-submodule.sh +++ b/git-submodule.sh @@ -342,6 +342,7 @@ set_name_rev () { # cmd_summary() { summary_limit=-1 + for_status= # parse $args after "submodule ... summary". while test $# -ne 0 @@ -350,6 +351,9 @@ cmd_summary() { --cached) cached="$1" ;; + --for-status) + for_status="$1" + ;; -n|--summary-limit) if summary_limit=$(($2 + 0)) 2>/dev/null && test "$summary_limit" = "$2" then @@ -398,6 +402,12 @@ cmd_summary() { ) test -n "$modules" && + if test -n "$for_status"; then + echo "# Modified submodules:" + echo "#" + else + true + fi && git diff-index $cached --raw $head -- $modules | grep -e '^:160000' -e '^:[0-7]* 160000' | cut -c2- | @@ -499,7 +509,12 @@ cmd_summary() { echo fi echo - done + done | + if test -n "$for_status"; then + sed -e "s|^|# |" -e 's|^# $|#|' + else + cat + fi } # # List all submodules, prefixed with: diff --git a/t/t7401-submodule-summary.sh b/t/t7401-submodule-summary.sh index 0f3c42a..1dbb39d 100755 --- a/t/t7401-submodule-summary.sh +++ b/t/t7401-submodule-summary.sh @@ -192,4 +192,17 @@ test_expect_success 'given commit' " EOF " +test_expect_success '--for-status' " + git submodule summary --for-status HEAD^ >actual && + diff actual - <<-EOF +# Modified submodules: +# +# * sm1 $head6...0000000: +# +# * sm2 0000000...$head7 (2): +# > Add foo9 +# +EOF +" + test_done -- 1.5.4.4.653.g7cf1e ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 2/5] builtin-status: submodule summary support 2008-03-14 15:28 ` [PATCH v2 1/5] git-submodule summary: --for-status option Ping Yin @ 2008-03-14 15:28 ` Ping Yin 2008-03-14 15:28 ` [PATCH v2 3/5] builtin-status: configurable submodule summary size Ping Yin 0 siblings, 1 reply; 8+ messages in thread From: Ping Yin @ 2008-03-14 15:28 UTC (permalink / raw) To: gitster; +Cc: git, Ping Yin This commit teaches 'git commit/status' show 'Modified submodules' section given by 'git submodule summary --cached --for-status' just before 'Untracked files' section. Signed-off-by: Ping Yin <pkufranky@gmail.com> --- wt-status.c | 26 ++++++++++++++++++++++++++ 1 files changed, 26 insertions(+), 0 deletions(-) diff --git a/wt-status.c b/wt-status.c index b3fd57b..dc4a88f 100644 --- a/wt-status.c +++ b/wt-status.c @@ -8,6 +8,7 @@ #include "revision.h" #include "diffcore.h" #include "quote.h" +#include "run-command.h" int wt_status_relative_paths = 1; int wt_status_use_color = -1; @@ -219,6 +220,30 @@ static void wt_status_print_changed(struct wt_status *s) rev.diffopt.format_callback_data = s; run_diff_files(&rev, 0); } +static void wt_status_print_submodule_summary(struct wt_status *s) +{ + struct child_process sm_summary; + const char *argv[] = { + "submodule", + "summary", + "--cached", + "--for-status", + s->amend ? "HEAD^" : "HEAD", + NULL + }; + char index[PATH_MAX]; + const char *env[2] = { index, NULL }; + snprintf(index, sizeof(index), "GIT_INDEX_FILE=%s", s->index_file); + + memset(&sm_summary, 0, sizeof(sm_summary)); + sm_summary.argv = argv; + sm_summary.env = env; + sm_summary.git_cmd = 1; + sm_summary.no_stdin = 1; + fflush(s->fp); + sm_summary.out = dup(fileno(s->fp)); /* run_command closes it */ + run_command(&sm_summary); +} static void wt_status_print_untracked(struct wt_status *s) { @@ -308,6 +333,7 @@ void wt_status_print(struct wt_status *s) } wt_status_print_changed(s); + wt_status_print_submodule_summary(s); wt_status_print_untracked(s); if (s->verbose && !s->is_initial) -- 1.5.4.4.653.g7cf1e ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 3/5] builtin-status: configurable submodule summary size 2008-03-14 15:28 ` [PATCH v2 2/5] builtin-status: submodule summary support Ping Yin @ 2008-03-14 15:28 ` Ping Yin 2008-03-14 15:28 ` [PATCH v2 4/5] buitin-status: Add tests for submodule summary Ping Yin 0 siblings, 1 reply; 8+ messages in thread From: Ping Yin @ 2008-03-14 15:28 UTC (permalink / raw) To: gitster; +Cc: git, Ping Yin Add config variable status.submodulesummary which is passed as arg for '--summary-limit' of 'git submodule summary' to limit the submodule summary size. status.submodulesummary is 0 by default which disables the summary. Signed-off-by: Ping Yin <pkufranky@gmail.com> --- wt-status.c | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-) diff --git a/wt-status.c b/wt-status.c index dc4a88f..7a32c51 100644 --- a/wt-status.c +++ b/wt-status.c @@ -12,6 +12,7 @@ int wt_status_relative_paths = 1; int wt_status_use_color = -1; +int wt_status_submodule_summary = 0; static char wt_status_colors[][COLOR_MAXLEN] = { "", /* WT_STATUS_HEADER: normal */ "\033[32m", /* WT_STATUS_UPDATED: green */ @@ -222,12 +223,17 @@ static void wt_status_print_changed(struct wt_status *s) } static void wt_status_print_submodule_summary(struct wt_status *s) { + if (! wt_status_submodule_summary) return; struct child_process sm_summary; + char summary_limit[64]; + sprintf(summary_limit, "%d", wt_status_submodule_summary); const char *argv[] = { "submodule", "summary", "--cached", "--for-status", + "--summary-limit", + summary_limit, s->amend ? "HEAD^" : "HEAD", NULL }; @@ -356,6 +362,10 @@ void wt_status_print(struct wt_status *s) int git_status_config(const char *k, const char *v) { + if (!strcmp(k, "status.submodulesummary")) { + wt_status_submodule_summary = atoi(v); + return 0; + } if (!strcmp(k, "status.color") || !strcmp(k, "color.status")) { wt_status_use_color = git_config_colorbool(k, v, -1); return 0; -- 1.5.4.4.653.g7cf1e ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 4/5] buitin-status: Add tests for submodule summary 2008-03-14 15:28 ` [PATCH v2 3/5] builtin-status: configurable submodule summary size Ping Yin @ 2008-03-14 15:28 ` Ping Yin 2008-03-14 15:28 ` [PATCH v2 5/5] git-status: Mention status.submodulesummary config in the documentation Ping Yin 0 siblings, 1 reply; 8+ messages in thread From: Ping Yin @ 2008-03-14 15:28 UTC (permalink / raw) To: gitster; +Cc: git, Ping Yin Signed-off-by: Ping Yin <pkufranky@gmail.com> --- t/t7502-status.sh | 134 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 134 insertions(+), 0 deletions(-) diff --git a/t/t7502-status.sh b/t/t7502-status.sh index cd08516..33882c9 100755 --- a/t/t7502-status.sh +++ b/t/t7502-status.sh @@ -149,4 +149,138 @@ test_expect_success 'status of partial commit excluding new file in index' ' test_cmp expect output ' +test_expect_success "setup status submodule summary" ' + test_create_repo sm && + cd sm && + : >foo && + git add foo && + git commit -m "Add foo" && + cd .. && + git add sm +' + +cat > expect <<EOF +# On branch master +# Changes to be committed: +# (use "git reset HEAD <file>..." to unstage) +# +# new file: dir2/added +# new file: sm +# +# Changed but not updated: +# (use "git add <file>..." to update what will be committed) +# +# modified: dir1/modified +# +# Untracked files: +# (use "git add <file>..." to include in what will be committed) +# +# dir1/untracked +# dir2/modified +# dir2/untracked +# expect +# output +# untracked +EOF +test_expect_success "status submodule summary is disabled by default" ' + git status > output && + git diff expect output +' + +head=$(cd sm && git rev-parse --short=7 --verify HEAD) + +cat > expect <<EOF +# On branch master +# Changes to be committed: +# (use "git reset HEAD <file>..." to unstage) +# +# new file: dir2/added +# new file: sm +# +# Changed but not updated: +# (use "git add <file>..." to update what will be committed) +# +# modified: dir1/modified +# +# Modified submodules: +# +# * sm 0000000...$head (1): +# > Add foo +# +# Untracked files: +# (use "git add <file>..." to include in what will be committed) +# +# dir1/untracked +# dir2/modified +# dir2/untracked +# expect +# output +# untracked +EOF +test_expect_success "status submodule summary" ' + git config status.submodulesummary 10 && + git status > output && + git diff expect output +' + + +cat > expect <<EOF +# On branch master +# Changed but not updated: +# (use "git add <file>..." to update what will be committed) +# +# modified: dir1/modified +# +# Untracked files: +# (use "git add <file>..." to include in what will be committed) +# +# dir1/untracked +# dir2/modified +# dir2/untracked +# expect +# output +# untracked +no changes added to commit (use "git add" and/or "git commit -a") +EOF +test_expect_success "status submodule summary (clean submodule)" ' + git commit -m "commit submodule" && + git config status.submodulesummary 10 && + ! git status > output && + git diff expect output +' + +cat > expect <<EOF +# On branch master +# Changes to be committed: +# (use "git reset HEAD^1 <file>..." to unstage) +# +# new file: dir2/added +# new file: sm +# +# Changed but not updated: +# (use "git add <file>..." to update what will be committed) +# +# modified: dir1/modified +# +# Modified submodules: +# +# * sm 0000000...$head (1): +# > Add foo +# +# Untracked files: +# (use "git add <file>..." to include in what will be committed) +# +# dir1/untracked +# dir2/modified +# dir2/untracked +# expect +# output +# untracked +EOF +test_expect_success "status submodule summary (--amend)" ' + git config status.submodulesummary 10 && + git status --amend > output && + git diff expect output +' + test_done -- 1.5.4.4.653.g7cf1e ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 5/5] git-status: Mention status.submodulesummary config in the documentation 2008-03-14 15:28 ` [PATCH v2 4/5] buitin-status: Add tests for submodule summary Ping Yin @ 2008-03-14 15:28 ` Ping Yin 0 siblings, 0 replies; 8+ messages in thread From: Ping Yin @ 2008-03-14 15:28 UTC (permalink / raw) To: gitster; +Cc: git, Ping Yin Signed-off-by: Ping Yin <pkufranky@gmail.com> --- Documentation/git-status.txt | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/Documentation/git-status.txt b/Documentation/git-status.txt index 3ea269a..32b6660 100644 --- a/Documentation/git-status.txt +++ b/Documentation/git-status.txt @@ -52,6 +52,10 @@ If the config variable `status.relativePaths` is set to false, then all paths shown are relative to the repository root, not to the current directory. +If 'status.submodulesummary' is set to a non zero number, the submodule +summary will be enabled and a summary of commits for modified submodules +will be shown (see --summary-limit option of linkgit:git-submodule[1]). + See Also -------- linkgit:gitignore[5] -- 1.5.4.4.653.g7cf1e ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2 0/5] builtin-status submodule summary 2008-03-14 15:28 [PATCH v2 0/5] builtin-status submodule summary Ping Yin 2008-03-14 15:28 ` [PATCH v2 1/5] git-submodule summary: --for-status option Ping Yin @ 2008-03-14 16:22 ` Johannes Sixt 2008-03-14 17:42 ` Ping Yin 1 sibling, 1 reply; 8+ messages in thread From: Johannes Sixt @ 2008-03-14 16:22 UTC (permalink / raw) To: Ping Yin; +Cc: gitster, git Ping Yin schrieb: > IMO, git submodule summary is not so useful for me if it's not > integrated into git-status. In fact i never use "git submodule > summary" directly. git-status with submodule summary support is very > useful to help user figure out what is going on in a more global level > when cooking the commit message. > > So i think this series should go along with the submodule summary series. I think so, too. The changes and defaults in wt-status.c are trivial enough that they don't penalize traditional git-status users. > The v2 series has following commits adding a new commit for documentation > > 1 git-submodule summary: --for-status option > 2 builtin-status: submodule summary support > 3 builtin-status: configurable submodule summary size > 4 buitin-status: Add tests for submodule summary > 5 git-status: Mention status.submodulesummary config in the documentation I'd actually squash 2, 3, and 5. You still have the statement before a declaration in 3/5. > + if (! wt_status_submodule_summary) return; And here the important part (IMO) is actually that 'return' should go on a line of its own. -- Hannes ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 0/5] builtin-status submodule summary 2008-03-14 16:22 ` [PATCH v2 0/5] builtin-status submodule summary Johannes Sixt @ 2008-03-14 17:42 ` Ping Yin 0 siblings, 0 replies; 8+ messages in thread From: Ping Yin @ 2008-03-14 17:42 UTC (permalink / raw) To: Johannes Sixt; +Cc: gitster, git On Sat, Mar 15, 2008 at 12:22 AM, Johannes Sixt <j.sixt@viscovery.net> wrote: > Ping Yin schrieb: > > > IMO, git submodule summary is not so useful for me if it's not > > integrated into git-status. In fact i never use "git submodule > > summary" directly. git-status with submodule summary support is very > > useful to help user figure out what is going on in a more global level > > when cooking the commit message. > > > > So i think this series should go along with the submodule summary series. > > I think so, too. The changes and defaults in wt-status.c are trivial > enough that they don't penalize traditional git-status users. > > > > The v2 series has following commits adding a new commit for documentation > > > > 1 git-submodule summary: --for-status option > > 2 builtin-status: submodule summary support > > 3 builtin-status: configurable submodule summary size > > 4 buitin-status: Add tests for submodule summary > > 5 git-status: Mention status.submodulesummary config in the documentation > > I'd actually squash 2, 3, and 5. > > You still have the statement before a declaration in 3/5. Sorry i forgot about it. > > > > + if (! wt_status_submodule_summary) return; > > And here the important part (IMO) is actually that 'return' should go on a > line of its own. OK -- Ping Yin ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2008-03-14 17:43 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2008-03-14 15:28 [PATCH v2 0/5] builtin-status submodule summary Ping Yin 2008-03-14 15:28 ` [PATCH v2 1/5] git-submodule summary: --for-status option Ping Yin 2008-03-14 15:28 ` [PATCH v2 2/5] builtin-status: submodule summary support Ping Yin 2008-03-14 15:28 ` [PATCH v2 3/5] builtin-status: configurable submodule summary size Ping Yin 2008-03-14 15:28 ` [PATCH v2 4/5] buitin-status: Add tests for submodule summary Ping Yin 2008-03-14 15:28 ` [PATCH v2 5/5] git-status: Mention status.submodulesummary config in the documentation Ping Yin 2008-03-14 16:22 ` [PATCH v2 0/5] builtin-status submodule summary Johannes Sixt 2008-03-14 17:42 ` Ping Yin
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).