From decd0a1ea594232f3b84831104257a0225be0085 Mon Sep 17 00:00:00 2001 From: Jens Lehmann Date: Tue, 2 Feb 2010 23:11:28 +0100 Subject: [PATCH 01/23] gitk: Add Ctrl-W shortcut for closing the active window To make the user experience between git gui and gitk more homogeneous, use Ctrl-W in gitk for closing the active window. When closing the main window doquit is called for proper cleanup. Signed-off-by: Jens Lehmann Signed-off-by: Paul Mackerras --- gitk | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gitk b/gitk index 1f36a3e815..50773a3d9d 100755 --- a/gitk +++ b/gitk @@ -2383,6 +2383,8 @@ proc makewindow {} { } bindall <$::BM> "canvscan mark %W %x %y" bindall "canvscan dragto %W %x %y" + bind all <$M1B-Key-w> {destroy [winfo toplevel %W]} + bind . <$M1B-Key-w> doquit bindkey selfirstline bindkey sellastline bind . "selnextline -1" @@ -2814,6 +2816,7 @@ proc keys {} { [mc "Gitk key bindings:"] [mc "<%s-Q> Quit" $M1T] +[mc "<%s-W> Close window" $M1T] [mc " Move to first commit"] [mc " Move to last commit"] [mc ", p, i Move up one commit"] From 75eb2af0e02b9d38742d04929b1c4da46b8d13c9 Mon Sep 17 00:00:00 2001 From: Mark Hills Date: Wed, 13 Jan 2010 20:40:18 +0000 Subject: [PATCH 02/23] gitk: Remove forced use of sans-serif font The X resources set using uifont cover this case. Signed-off-by: Mark Hills Signed-off-by: Paul Mackerras --- gitk | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/gitk b/gitk index 50773a3d9d..59970aff39 100755 --- a/gitk +++ b/gitk @@ -10531,7 +10531,6 @@ proc mkfontdisp {font top which} { set fontpref($font) [set $font] ${NS}::button $top.${font}but -text $which \ -command [list choosefont $font $which] - if {!$use_ttk} {$top.${font}but configure -font optionfont} ${NS}::label $top.$font -relief flat -font $font \ -text $fontattr($font,family) -justify left grid x $top.${font}but $top.$font -sticky w @@ -10794,15 +10793,6 @@ proc doprefs {} { mkfontdisp textfont $top [mc "Diff display font"] mkfontdisp uifont $top [mc "User interface font"] - if {!$use_ttk} { - foreach w {maxpctl maxwidthl showlocal autoselect tabstopl ntag - ldiff lattr extdifff.l extdifff.b bgbut fgbut - diffoldbut diffnewbut hunksepbut markbgbut selbgbut - want_ttk ttk_note} { - $top.$w configure -font optionfont - } - } - ${NS}::frame $top.buts ${NS}::button $top.buts.ok -text [mc "OK"] -command prefsok -default active ${NS}::button $top.buts.can -text [mc "Cancel"] -command prefscan -default normal @@ -11414,8 +11404,6 @@ namespace import ::msgcat::mc catch {source ~/.gitk} -font create optionfont -family sans-serif -size -12 - parsefont mainfont $mainfont eval font create mainfont [fontflags mainfont] eval font create mainfontbold [fontflags mainfont 1] From 0933b04e5204674784b3ff7bcff68b663e633f8b Mon Sep 17 00:00:00 2001 From: Mark Hills Date: Wed, 13 Jan 2010 20:40:19 +0000 Subject: [PATCH 03/23] gitk: Set the font for all spinbox widgets Use the X resources to set the font, removing the need to set the font for specific widgets. Signed-off-by: Mark Hills Signed-off-by: Paul Mackerras --- gitk | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gitk b/gitk index 59970aff39..f1e70ad047 100755 --- a/gitk +++ b/gitk @@ -1879,6 +1879,7 @@ proc setoptions {} { option add *Message.font uifont startupFile option add *Entry.font uifont startupFile option add *Labelframe.font uifont startupFile + option add *Spinbox.font textfont startupFile } # Make a menu and submenus. @@ -2229,7 +2230,7 @@ proc makewindow {} { -command changediffdisp -variable diffelide -value {1 0} ${NS}::label .bleft.mid.labeldiffcontext -text " [mc "Lines of context"]: " pack .bleft.mid.diff .bleft.mid.old .bleft.mid.new -side left - spinbox .bleft.mid.diffcontext -width 5 -font textfont \ + spinbox .bleft.mid.diffcontext -width 5 \ -from 0 -increment 1 -to 10000000 \ -validate all -validatecommand "diffcontextvalidate %P" \ -textvariable diffcontextstring From 207ad7b8878caa8b1d09c39ea0754f0192daece5 Mon Sep 17 00:00:00 2001 From: Mark Hills Date: Wed, 13 Jan 2010 20:40:20 +0000 Subject: [PATCH 04/23] gitk: Set the font for all listbox widgets This affects the font chooser. Signed-off-by: Mark Hills Signed-off-by: Paul Mackerras --- gitk | 1 + 1 file changed, 1 insertion(+) diff --git a/gitk b/gitk index f1e70ad047..ccfc8dd89d 100755 --- a/gitk +++ b/gitk @@ -1880,6 +1880,7 @@ proc setoptions {} { option add *Entry.font uifont startupFile option add *Labelframe.font uifont startupFile option add *Spinbox.font textfont startupFile + option add *Listbox.font mainfont startupFile } # Make a menu and submenus. From b9b142ffa218b50dadad091bd660ba801d0ca5d5 Mon Sep 17 00:00:00 2001 From: Mark Hills Date: Wed, 13 Jan 2010 20:40:22 +0000 Subject: [PATCH 05/23] gitk: Use consistent font for all text input fields Instead of setting the font for specific widgets, set the font for the widget type. If themed widgets are not available, this is via the X resources. If themed widgets are available, the theme font is used. The exception is the SHA1 ID which is forced to use the fixed-width font, even where themed widgets are used. Signed-off-by: Mark Hills Signed-off-by: Paul Mackerras --- gitk | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/gitk b/gitk index ccfc8dd89d..a47abc137b 100755 --- a/gitk +++ b/gitk @@ -1877,7 +1877,8 @@ proc setoptions {} { option add *Menubutton.font uifont startupFile option add *Label.font uifont startupFile option add *Message.font uifont startupFile - option add *Entry.font uifont startupFile + option add *Entry.font textfont startupFile + option add *Text.font textfont startupFile option add *Labelframe.font uifont startupFile option add *Spinbox.font textfont startupFile option add *Listbox.font mainfont startupFile @@ -2176,7 +2177,7 @@ proc makewindow {} { set findstring {} set fstring .tf.lbar.findstring lappend entries $fstring - ${NS}::entry $fstring -width 30 -font textfont -textvariable findstring + ${NS}::entry $fstring -width 30 -textvariable findstring trace add variable findstring write find_change set findtype [mc "Exact"] set findtypemenu [makedroplist .tf.lbar.findtype \ @@ -2219,7 +2220,7 @@ proc makewindow {} { pack .bleft.top.search -side left -padx 5 set sstring .bleft.top.sstring set searchstring "" - ${NS}::entry $sstring -width 20 -font textfont -textvariable searchstring + ${NS}::entry $sstring -width 20 -textvariable searchstring lappend entries $sstring trace add variable searchstring write incrsearch pack $sstring -side left -expand 1 -fill x @@ -4042,7 +4043,7 @@ proc vieweditor {top n title} { } elseif {$type eq "path"} { ${NS}::label $top.l -text $title pack $top.l -in $top -side top -pady [list 3 0] -anchor w -padx 3 - text $top.t -width 40 -height 5 -background $bgcolor -font uifont + text $top.t -width 40 -height 5 -background $bgcolor if {[info exists viewfiles($n)]} { foreach f $viewfiles($n) { $top.t insert end $f From e7feb695bf93d57c1c5fdf9f2acc2039e3fdf850 Mon Sep 17 00:00:00 2001 From: Jonathan Nieder Date: Sat, 6 Mar 2010 16:48:38 -0600 Subject: [PATCH 06/23] gitk: Add comments to explain encode_view_opts and decode_view_opts Summarize these functions to save the reader some time. Signed-off-by: Jonathan Nieder Signed-off-by: Paul Mackerras --- gitk | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gitk b/gitk index a47abc137b..140fe1f395 100755 --- a/gitk +++ b/gitk @@ -3851,6 +3851,7 @@ set known_view_options { {cmd t50= + {} {mc "Command to generate more commits to include:"}} } +# Convert $newviewopts($n, ...) into args for git log. proc encode_view_opts {n} { global known_view_options newviewopts @@ -3884,6 +3885,7 @@ proc encode_view_opts {n} { return [concat $rargs [shellsplit $newviewopts($n,args)]] } +# Fill $newviewopts($n, ...) based on args for git log. proc decode_view_opts {n view_args} { global known_view_options newviewopts From 5d11f794de3c1a5cd592af008a369a90fa30d2e9 Mon Sep 17 00:00:00 2001 From: Jonathan Nieder Date: Sat, 6 Mar 2010 16:58:42 -0600 Subject: [PATCH 07/23] gitk: Don't clobber "Remember this view" setting MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In the View → Edit View... dialog, the "Remember this view" option always starts out unset. Using the dialog to change an existing view and ignoring the parts of the dialog that aren’t relevant results in both the old and new versions of the view being lost. The cause: right after newviewopts($curview,perm) is set to an appropriate value, decode_view_opts is clobbering it with the default value. If that call is moved a little earlier, the "Remember this view" option gets properly set to its previous value, fixing the problem. Reported-by: Steve Cotton Signed-off-by: Jonathan Nieder Signed-off-by: Paul Mackerras --- gitk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gitk b/gitk index 140fe1f395..8a4f727535 100755 --- a/gitk +++ b/gitk @@ -3811,10 +3811,10 @@ proc newview {ishighlight} { raise $top return } + decode_view_opts $nextviewnum $revtreeargs set newviewname($nextviewnum) "[mc "View"] $nextviewnum" set newviewopts($nextviewnum,perm) 0 set newviewopts($nextviewnum,cmd) $viewargscmd($curview) - decode_view_opts $nextviewnum $revtreeargs vieweditor $top $nextviewnum [mc "Gitk view definition"] } @@ -3968,10 +3968,10 @@ proc editview {} { raise $top return } + decode_view_opts $curview $viewargs($curview) set newviewname($curview) $viewname($curview) set newviewopts($curview,perm) $viewperm($curview) set newviewopts($curview,cmd) $viewargscmd($curview) - decode_view_opts $curview $viewargs($curview) vieweditor $top $curview "[mc "Gitk: edit view"] $viewname($curview)" } From 2e58c944cdaf63a23ebd35c43d31e639e1e23d9f Mon Sep 17 00:00:00 2001 From: Pat Thoyts Date: Fri, 12 Mar 2010 18:31:47 +0000 Subject: [PATCH 08/23] gitk: Avoid calling tk_setPalette on Windows This just messes up the system colors. Leave them alone. Signed-off-by: Pat Thoyts Signed-off-by: Paul Mackerras --- gitk | 1 + 1 file changed, 1 insertion(+) diff --git a/gitk b/gitk index 8a4f727535..ba91bba7e8 100755 --- a/gitk +++ b/gitk @@ -10847,6 +10847,7 @@ proc setselbg {c} { # radiobuttons look bad. This chooses white for selectColor if the # background color is light, or black if it is dark. proc setui {c} { + if {[tk windowingsystem] eq "win32"} { return } set bg [winfo rgb . $c] set selc black if {[lindex $bg 0] + 1.5 * [lindex $bg 1] + 0.5 * [lindex $bg 2] > 100000} { From adab0dabcc95d02c3ab2076f0db5e5f94b30a96d Mon Sep 17 00:00:00 2001 From: Pat Thoyts Date: Fri, 12 Mar 2010 18:31:48 +0000 Subject: [PATCH 09/23] gitk: Add emacs editor variable block Help contributors use the correct indentation style. Signed-off-by: Pat Thoyts Signed-off-by: Paul Mackerras --- gitk | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/gitk b/gitk index ba91bba7e8..9da0526239 100755 --- a/gitk +++ b/gitk @@ -11610,3 +11610,9 @@ if {[tk windowingsystem] eq "win32"} { } getcommits {} + +# Local variables: +# mode: tcl +# indent-tabs-mode: t +# tab-width: 8 +# End: From e7d516b67b02cfc4c18408d2d39118c61345bf6d Mon Sep 17 00:00:00 2001 From: Pat Thoyts Date: Fri, 12 Mar 2010 18:31:49 +0000 Subject: [PATCH 10/23] gitk: Fix display of copyright symbol The script file uses utf-8 encoding but when sourced it will be read using the default system encoding which is never utf8 on windows. This causes the copyright symbol to display incorrectly in the about dialog. Using the unicode escape sequence avoids incorrect decoding but does require a double escape in the .po files. Also adjusted the year range. Signed-off-by: Pat Thoyts Signed-off-by: Paul Mackerras --- gitk | 2 +- po/de.po | 4 ++-- po/es.po | 4 ++-- po/fr.po | 4 ++-- po/hu.po | 4 ++-- po/it.po | 4 ++-- po/ja.po | 4 ++-- po/ru.po | 4 ++-- po/sv.po | 4 ++-- 9 files changed, 17 insertions(+), 17 deletions(-) diff --git a/gitk b/gitk index 9da0526239..db8977d4fb 100755 --- a/gitk +++ b/gitk @@ -2787,7 +2787,7 @@ proc about {} { message $w.m -text [mc " Gitk - a commit viewer for git -Copyright © 2005-2009 Paul Mackerras +Copyright \u00a9 2005-2010 Paul Mackerras Use and redistribute under the terms of the GNU General Public License"] \ -justify center -aspect 400 -border 2 -bg white -relief groove diff --git a/po/de.po b/po/de.po index c79aa9cbc8..bd194a3dff 100644 --- a/po/de.po +++ b/po/de.po @@ -334,14 +334,14 @@ msgid "" "\n" "Gitk - a commit viewer for git\n" "\n" -"Copyright ©9 2005-2009 Paul Mackerras\n" +"Copyright \\u00a9 2005-2010 Paul Mackerras\n" "\n" "Use and redistribute under the terms of the GNU General Public License" msgstr "" "\n" "Gitk - eine Visualisierung der Git-Historie\n" "\n" -"Copyright © 2005-2009 Paul Mackerras\n" +"Copyright \\u00a9 2005-2010 Paul Mackerras\n" "\n" "Benutzung und Weiterverbreitung gemäß den Bedingungen der GNU General Public License" diff --git a/po/es.po b/po/es.po index 0e19b5eae2..0471dd0672 100644 --- a/po/es.po +++ b/po/es.po @@ -281,14 +281,14 @@ msgid "" "\n" "Gitk - a commit viewer for git\n" "\n" -"Copyright © 2005-2008 Paul Mackerras\n" +"Copyright \\u00a9 2005-2010 Paul Mackerras\n" "\n" "Use and redistribute under the terms of the GNU General Public License" msgstr "" "\n" "Gitk - un visualizador de revisiones para git\n" "\n" -"Copyright © 2005-2008 Paul Mackerras\n" +"Copyright \\u00a9 2005-2010 Paul Mackerras\n" "\n" "Uso y redistribución permitidos según los términos de la Licencia Pública " "General de GNU (GNU GPL)" diff --git a/po/fr.po b/po/fr.po index cb0e1edc63..5370ddc393 100644 --- a/po/fr.po +++ b/po/fr.po @@ -334,14 +334,14 @@ msgid "" "\n" "Gitk - a commit viewer for git\n" "\n" -"Copyright © 2005-2008 Paul Mackerras\n" +"Copyright \\u00a9 2005-2010 Paul Mackerras\n" "\n" "Use and redistribute under the terms of the GNU General Public License" msgstr "" "\n" "Gitk - visualisateur de commit pour git\n" "\n" -"Copyright © 2005-2008 Paul Mackerras\n" +"Copyright \\u00a9 2005-2010 Paul Mackerras\n" "\n" "Utilisation et redistribution soumises aux termes de la GNU General Public " "License" diff --git a/po/hu.po b/po/hu.po index 1df212e881..7262b610dc 100644 --- a/po/hu.po +++ b/po/hu.po @@ -333,14 +333,14 @@ msgid "" "\n" "Gitk - a commit viewer for git\n" "\n" -"Copyright ©9 2005-2009 Paul Mackerras\n" +"Copyright \\u00a9 2005-2010 Paul Mackerras\n" "\n" "Use and redistribute under the terms of the GNU General Public License" msgstr "" "\n" "Gitk - commit nézegető a githez\n" "\n" -"Szerzői jog ©9 2005-2009 Paul Mackerras\n" +"Szerzői jog \\u00a9 2005-2010 Paul Mackerras\n" "\n" "Használd és terjeszd a GNU General Public License feltételei mellett" diff --git a/po/it.po b/po/it.po index 4818652309..a730d63a42 100644 --- a/po/it.po +++ b/po/it.po @@ -334,14 +334,14 @@ msgid "" "\n" "Gitk - a commit viewer for git\n" "\n" -"Copyright © 2005-2009 Paul Mackerras\n" +"Copyright \\u00a9 2005-2010 Paul Mackerras\n" "\n" "Use and redistribute under the terms of the GNU General Public License" msgstr "" "\n" "Gitk - un visualizzatore di revisioni per git\n" "\n" -"Copyright © 2005-2009 Paul Mackerras\n" +"Copyright \\u00a9 2005-2010 Paul Mackerras\n" "\n" "Utilizzo e redistribuzione permessi sotto i termini della GNU General Public " "License" diff --git a/po/ja.po b/po/ja.po index c0c92addb4..4f4705164c 100644 --- a/po/ja.po +++ b/po/ja.po @@ -335,14 +335,14 @@ msgid "" "\n" "Gitk - a commit viewer for git\n" "\n" -"Copyright © 2005-2008 Paul Mackerras\n" +"Copyright \\u00a9 2005-2010 Paul Mackerras\n" "\n" "Use and redistribute under the terms of the GNU General Public License" msgstr "" "\n" "Gitk - gitコミットビューア\n" "\n" -"Copyright © 2005-2008 Paul Mackerras\n" +"Copyright \\u00a9 2005-2010 Paul Mackerras\n" "\n" "使用および再配布は GNU General Public License に従ってください" diff --git a/po/ru.po b/po/ru.po index 704eba8f9d..c3d0285b24 100644 --- a/po/ru.po +++ b/po/ru.po @@ -313,14 +313,14 @@ msgid "" "\n" "Gitk - a commit viewer for git\n" "\n" -"Copyright © 2005-2008 Paul Mackerras\n" +"Copyright \\u00a9 2005-2010 Paul Mackerras\n" "\n" "Use and redistribute under the terms of the GNU General Public License" msgstr "" "\n" "Gitk - программа просмотра истории репозиториев Git\n" "\n" -"Copyright (c) 2005-2008 Paul Mackerras\n" +"Copyright \\u00a9 2005-2010 Paul Mackerras\n" "\n" "Использование и распространение согласно условиям GNU General Public License" diff --git a/po/sv.po b/po/sv.po index 0f5e2fd8d7..386763ade7 100644 --- a/po/sv.po +++ b/po/sv.po @@ -334,14 +334,14 @@ msgid "" "\n" "Gitk - a commit viewer for git\n" "\n" -"Copyright ©9 2005-2009 Paul Mackerras\n" +"Copyright \\u00a9 2005-2010 Paul Mackerras\n" "\n" "Use and redistribute under the terms of the GNU General Public License" msgstr "" "\n" "Gitk - en incheckningsvisare för git\n" "\n" -"Copyright © 2005-2009 Paul Mackerras\n" +"Copyright \\u00a9 2005-2010 Paul Mackerras\n" "\n" "Använd och vidareförmedla enligt villkoren i GNU General Public License" From 5b16360330822527eac1fa84131d185ff784c9fb Mon Sep 17 00:00:00 2001 From: Johannes Gilger Date: Tue, 13 Apr 2010 22:31:12 +0200 Subject: [PATCH 11/23] pretty: Initialize notes if %N is used When using git log --pretty='%N' without an explicit --show-notes, git would segfault. This patches fixes this behaviour by loading the needed notes datastructures if --pretty is used and the format contains %N. When --pretty='%N' is used together with --no-notes, %N won't be expanded. This is an extension to a proposed patch by Jeff King. Signed-off-by: Johannes Gilger Signed-off-by: Junio C Hamano --- builtin/log.c | 6 +++++- commit.h | 5 +++++ pretty.c | 40 ++++++++++++++++++++++++++++++++++++---- 3 files changed, 46 insertions(+), 5 deletions(-) diff --git a/builtin/log.c b/builtin/log.c index b706a5ff88..6208703c06 100644 --- a/builtin/log.c +++ b/builtin/log.c @@ -36,6 +36,7 @@ static void cmd_log_init(int argc, const char **argv, const char *prefix, { int i; int decoration_style = 0; + struct userformat_want w; rev->abbrev = DEFAULT_ABBREV; rev->commit_format = CMIT_FMT_DEFAULT; @@ -58,7 +59,10 @@ static void cmd_log_init(int argc, const char **argv, const char *prefix, usage(builtin_log_usage); argc = setup_revisions(argc, argv, rev, opt); - if (!rev->show_notes_given && !rev->pretty_given) + memset(&w, 0, sizeof(w)); + userformat_find_requirements(NULL, &w); + + if (!rev->show_notes_given && (!rev->pretty_given || w.notes)) rev->show_notes = 1; if (rev->show_notes) init_display_notes(&rev->notes_opt); diff --git a/commit.h b/commit.h index 3cf5166581..26ec8c0d1c 100644 --- a/commit.h +++ b/commit.h @@ -74,11 +74,16 @@ struct pretty_print_context struct reflog_walk_info *reflog_info; }; +struct userformat_want { + unsigned notes:1; +}; + extern int has_non_ascii(const char *text); struct rev_info; /* in revision.h, it circularly uses enum cmit_fmt */ extern char *reencode_commit_message(const struct commit *commit, const char **encoding_p); extern void get_commit_format(const char *arg, struct rev_info *); +extern void userformat_find_requirements(const char *fmt, struct userformat_want *w); extern void format_commit_message(const struct commit *commit, const char *format, struct strbuf *sb, const struct pretty_print_context *context); diff --git a/pretty.c b/pretty.c index 6ba3da89b7..7cb3a2af50 100644 --- a/pretty.c +++ b/pretty.c @@ -775,10 +775,13 @@ static size_t format_commit_one(struct strbuf *sb, const char *placeholder, } return 0; /* unknown %g placeholder */ case 'N': - format_display_notes(commit->object.sha1, sb, - git_log_output_encoding ? git_log_output_encoding - : git_commit_encoding, 0); - return 1; + if (c->pretty_ctx->show_notes) { + format_display_notes(commit->object.sha1, sb, + git_log_output_encoding ? git_log_output_encoding + : git_commit_encoding, 0); + return 1; + } + return 0; } /* For the rest we have to parse the commit header. */ @@ -855,6 +858,35 @@ static size_t format_commit_item(struct strbuf *sb, const char *placeholder, return consumed + 1; } +static size_t userformat_want_item(struct strbuf *sb, const char *placeholder, + void *context) +{ + struct userformat_want *w = context; + + if (*placeholder == '+' || *placeholder == '-') + placeholder++; + + switch (*placeholder) { + case 'N': + w->notes = 1; + break; + } + return 0; +} + +void userformat_find_requirements(const char *fmt, struct userformat_want *w) +{ + struct strbuf dummy = STRBUF_INIT; + + if (!fmt) { + if (!user_format) + return; + fmt = user_format; + } + strbuf_expand(&dummy, user_format, userformat_want_item, w); + strbuf_release(&dummy); +} + void format_commit_message(const struct commit *commit, const char *format, struct strbuf *sb, const struct pretty_print_context *pretty_ctx) From a1d383c5ab90ec19c8a77158f65e5ea7d61fb42c Mon Sep 17 00:00:00 2001 From: Jens Lehmann Date: Fri, 9 Apr 2010 22:16:42 +0200 Subject: [PATCH 12/23] gitk: Display dirty submodules correctly Since recently "git diff --submodule" prints out extra lines when the submodule contains untracked or modified files. Show all those lines of one submodule under the same header. Also for newly added or removed submodules the submodule name contained trailing garbage because the extraction of the name was not done right. Signed-off-by: Jens Lehmann Signed-off-by: Paul Mackerras --- gitk | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/gitk b/gitk index db8977d4fb..1b0e09a561 100755 --- a/gitk +++ b/gitk @@ -7509,7 +7509,7 @@ proc getblobdiffs {ids} { global ignorespace global limitdiffs vfilelimit curview global diffencoding targetline diffnparents - global git_version + global git_version currdiffsubmod set textconv {} if {[package vcompare $git_version "1.6.1"] >= 0} { @@ -7536,6 +7536,7 @@ proc getblobdiffs {ids} { set diffencoding [get_path_encoding {}] fconfigure $bdf -blocking 0 -encoding binary -eofchar {} set blobdifffd($ids) $bdf + set currdiffsubmod "" filerun $bdf [list getblobdiffline $bdf $diffids] } @@ -7606,7 +7607,7 @@ proc getblobdiffline {bdf ids} { global diffnexthead diffnextnote difffilestart global ctext_file_names ctext_file_lines global diffinhdr treediffs mergemax diffnparents - global diffencoding jump_to_here targetline diffline + global diffencoding jump_to_here targetline diffline currdiffsubmod set nr 0 $ctext conf -state normal @@ -7687,19 +7688,30 @@ proc getblobdiffline {bdf ids} { } elseif {![string compare -length 10 "Submodule " $line]} { # start of a new submodule - if {[string compare [$ctext get "end - 4c" end] "\n \n\n"]} { + if {[regexp -indices "\[0-9a-f\]+\\.\\." $line nameend]} { + set fname [string range $line 10 [expr [lindex $nameend 0] - 2]] + } else { + set fname [string range $line 10 [expr [string first "contains " $line] - 2]] + } + if {$currdiffsubmod != $fname} { $ctext insert end "\n"; # Add newline after commit message } set curdiffstart [$ctext index "end - 1c"] lappend ctext_file_names "" - set fname [string range $line 10 [expr [string last " " $line] - 1]] - lappend ctext_file_lines $fname - makediffhdr $fname $ids - $ctext insert end "\n$line\n" filesep + if {$currdiffsubmod != $fname} { + lappend ctext_file_lines $fname + makediffhdr $fname $ids + set currdiffsubmod $fname + $ctext insert end "\n$line\n" filesep + } else { + $ctext insert end "$line\n" filesep + } } elseif {![string compare -length 3 " >" $line]} { + set $currdiffsubmod "" set line [encoding convertfrom $diffencoding $line] $ctext insert end "$line\n" dresult } elseif {![string compare -length 3 " <" $line]} { + set $currdiffsubmod "" set line [encoding convertfrom $diffencoding $line] $ctext insert end "$line\n" d0 } elseif {$diffinhdr} { @@ -8535,7 +8547,7 @@ proc do_cmp_commits {a b} { } proc diffcommits {a b} { - global diffcontext diffids blobdifffd diffinhdr + global diffcontext diffids blobdifffd diffinhdr currdiffsubmod set tmpdir [gitknewtmpdir] set fna [file join $tmpdir "commit-[string range $a 0 7]"] @@ -8556,6 +8568,7 @@ proc diffcommits {a b} { set diffids [list commits $a $b] set blobdifffd($diffids) $fd set diffinhdr 0 + set currdiffsubmod "" filerun $fd [list getblobdiffline $fd $diffids] } From 0974c117ff4e17e8b6300519cae0fbc67d34adaa Mon Sep 17 00:00:00 2001 From: Jeff King Date: Sat, 17 Apr 2010 13:41:08 -0400 Subject: [PATCH 13/23] diff: use large integers for diffstat calculations The diffstat "added" and "changed" fields generally store line counts; however, for binary files, they store file sizes. Since we store and print these values as ints, a diffstat on a file larger than 2G can show a negative size. Instead, let's use uintmax_t, which should be at least 64 bits on modern platforms. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- diff.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/diff.c b/diff.c index 08bbd3e907..0182237c2d 100644 --- a/diff.c +++ b/diff.c @@ -942,7 +942,7 @@ struct diffstat_t { unsigned is_unmerged:1; unsigned is_binary:1; unsigned is_renamed:1; - unsigned int added, deleted; + uintmax_t added, deleted; } **files; }; @@ -1034,7 +1034,7 @@ static void fill_print_name(struct diffstat_file *file) static void show_stats(struct diffstat_t *data, struct diff_options *options) { int i, len, add, del, adds = 0, dels = 0; - int max_change = 0, max_len = 0; + uintmax_t max_change = 0, max_len = 0; int total_files = data->nr; int width, name_width; const char *reset, *set, *add_c, *del_c; @@ -1063,7 +1063,7 @@ static void show_stats(struct diffstat_t *data, struct diff_options *options) for (i = 0; i < data->nr; i++) { struct diffstat_file *file = data->files[i]; - int change = file->added + file->deleted; + uintmax_t change = file->added + file->deleted; fill_print_name(file); len = strlen(file->print_name); if (max_len < len) @@ -1091,8 +1091,8 @@ static void show_stats(struct diffstat_t *data, struct diff_options *options) for (i = 0; i < data->nr; i++) { const char *prefix = ""; char *name = data->files[i]->print_name; - int added = data->files[i]->added; - int deleted = data->files[i]->deleted; + uintmax_t added = data->files[i]->added; + uintmax_t deleted = data->files[i]->deleted; int name_len; /* @@ -1113,9 +1113,11 @@ static void show_stats(struct diffstat_t *data, struct diff_options *options) if (data->files[i]->is_binary) { show_name(options->file, prefix, name, len); fprintf(options->file, " Bin "); - fprintf(options->file, "%s%d%s", del_c, deleted, reset); + fprintf(options->file, "%s%"PRIuMAX"%s", + del_c, deleted, reset); fprintf(options->file, " -> "); - fprintf(options->file, "%s%d%s", add_c, added, reset); + fprintf(options->file, "%s%"PRIuMAX"%s", + add_c, added, reset); fprintf(options->file, " bytes"); fprintf(options->file, "\n"); continue; @@ -1144,7 +1146,7 @@ static void show_stats(struct diffstat_t *data, struct diff_options *options) del = scale_linear(del, width, max_change); } show_name(options->file, prefix, name, len); - fprintf(options->file, "%5d%s", added + deleted, + fprintf(options->file, "%5"PRIuMAX"%s", added + deleted, added + deleted ? " " : ""); show_graph(options->file, '+', add, add_c, reset); show_graph(options->file, '-', del, del_c, reset); @@ -1194,7 +1196,8 @@ static void show_numstat(struct diffstat_t *data, struct diff_options *options) fprintf(options->file, "-\t-\t"); else fprintf(options->file, - "%d\t%d\t", file->added, file->deleted); + "%"PRIuMAX"\t%"PRIuMAX"\t", + file->added, file->deleted); if (options->line_termination) { fill_print_name(file); if (!file->is_renamed) From c308b9c25d54c72977d16155ae04e37f3490d5ac Mon Sep 17 00:00:00 2001 From: Will Palmer Date: Sat, 17 Apr 2010 17:55:26 +0100 Subject: [PATCH 14/23] documentation: clarify direction of core.autocrlf The description for core.autocrlf refers to reads from / writes to "the filesystem", the only use of this rather ambiguous term, which technically could be referring to the git object database. (All other mentions are part of phrases such as "..filesystems (like NFS).."). Other sections, including the section on core.safecrlf, use the term "work tree" for the same purpose as the term "the filesystem" is used in the core.autocrlf section, so that seems like a good alternative, which makes it clearer what direction the addition/removal of CR characters occurs in. Signed-off-by: Will Palmer Signed-off-by: Junio C Hamano --- Documentation/config.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Documentation/config.txt b/Documentation/config.txt index 75b8afec09..f6ddd35c01 100644 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@ -198,11 +198,11 @@ core.quotepath:: core.autocrlf:: If true, makes git convert `CRLF` at the end of lines in text files to - `LF` when reading from the filesystem, and convert in reverse when - writing to the filesystem. The variable can be set to + `LF` when reading from the work tree, and convert in reverse when + writing to the work tree. The variable can be set to 'input', in which case the conversion happens only while - reading from the filesystem but files are written out with - `LF` at the end of lines. A file is considered + reading from the work tree but files are written out to the work + tree with `LF` at the end of lines. A file is considered "text" (i.e. be subjected to the autocrlf mechanism) based on the file's `crlf` attribute, or if `crlf` is unspecified, based on the file's contents. See linkgit:gitattributes[5]. From 636db2c036d0f26bd0b1139b7abe04bdecf3e036 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 18 Apr 2010 11:19:39 -0700 Subject: [PATCH 15/23] t3301: add tests to use --format="%N" Signed-off-by: Junio C Hamano --- t/t3301-notes.sh | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/t/t3301-notes.sh b/t/t3301-notes.sh index b2e7b07039..64f32ad94d 100755 --- a/t/t3301-notes.sh +++ b/t/t3301-notes.sh @@ -55,6 +55,15 @@ test_expect_success 'handle empty notes gracefully' ' git notes show ; test 1 = $? ' +test_expect_success 'show non-existent notes entry with %N' ' + for l in A B + do + echo "$l" + done >expect && + git show -s --format='A%n%NB' >output && + test_cmp expect output +' + test_expect_success 'create notes' ' git config core.notesRef refs/notes/commits && MSG=b4 git notes add && @@ -65,6 +74,15 @@ test_expect_success 'create notes' ' test_must_fail git notes show HEAD^ ' +test_expect_success 'show notes entry with %N' ' + for l in A b4 B + do + echo "$l" + done >expect && + git show -s --format='A%n%NB' >output && + test_cmp expect output +' + cat >expect < Date: Sun, 18 Apr 2010 08:01:45 -0400 Subject: [PATCH 16/23] rebase-interactive: silence warning when no commits rewritten If you do a "rebase -i" and don't change any commits, nothing is rewritten, and we have no REWRITTEN_LIST. The shell prints out an ugly message: $ GIT_EDITOR=true git rebase -i HEAD^ /path/to/git-rebase--interactive: 1: cannot open /path/to/repo/.git/rebase-merge/rewritten-list: No such file Successfully rebased and updated refs/heads/master. We can fix it by not running "notes copy" at all if nothing was rewritten. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- git-rebase--interactive.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh index b817c4a76e..436b7f5977 100755 --- a/git-rebase--interactive.sh +++ b/git-rebase--interactive.sh @@ -565,6 +565,7 @@ do_next () { git diff-tree --stat $(cat "$DOTEST"/head)..HEAD } && { + test -s "$REWRITTEN_LIST" && git notes copy --for-rewrite=rebase < "$REWRITTEN_LIST" || true # we don't care if this copying failed } && From 03aa87ed9912a6beac1a23e69ef0b70e1589d3d0 Mon Sep 17 00:00:00 2001 From: Charles Bailey Date: Sun, 18 Apr 2010 19:28:17 +0100 Subject: [PATCH 17/23] Documentation: Describe other situations where -z affects git diff -z also alters the behaviour of --name-only and --name-status. Signed-off-by: Charles Bailey Signed-off-by: Junio C Hamano --- Documentation/diff-options.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Documentation/diff-options.txt b/Documentation/diff-options.txt index 8707d0e740..a1191d647b 100644 --- a/Documentation/diff-options.txt +++ b/Documentation/diff-options.txt @@ -94,8 +94,8 @@ Also, when `--raw` or `--numstat` has been given, do not munge pathnames and use NULs as output field terminators. endif::git-log[] ifndef::git-log[] - When `--raw` or `--numstat` has been given, do not munge - pathnames and use NULs as output field terminators. + When `--raw`, `--numstat`, `--name-only` or `--name-status` has been + given, do not munge pathnames and use NULs as output field terminators. endif::git-log[] + Without this option, each pathname output will have TAB, LF, double quotes, From 00b84e9dbfa6fabbac971dd70bc5a44802b0c36e Mon Sep 17 00:00:00 2001 From: Ramkumar Ramachandra Date: Sun, 28 Mar 2010 23:33:50 +0530 Subject: [PATCH 18/23] Documentation/remote-helpers: Rewrite description Rewrite the description section to describe what exactly remote helpers are and the need for them. Also mention the curl family of remote helpers as an example. [jc: with readability fixes from Jonathan squashed in] Signed-off-by: Ramkumar Ramachandra Reviewed-by: Jonathan Nieder Acked-by: Sverre Rabbelier Signed-off-by: Junio C Hamano --- Documentation/git-remote-helpers.txt | 33 +++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/Documentation/git-remote-helpers.txt b/Documentation/git-remote-helpers.txt index 1b5f61aa0b..9d86c2679a 100644 --- a/Documentation/git-remote-helpers.txt +++ b/Documentation/git-remote-helpers.txt @@ -3,7 +3,7 @@ git-remote-helpers(1) NAME ---- -git-remote-helpers - Helper programs for interoperation with remote git +git-remote-helpers - Helper programs to interact with remote repositories SYNOPSIS -------- @@ -12,11 +12,32 @@ SYNOPSIS DESCRIPTION ----------- -These programs are normally not used directly by end users, but are -invoked by various git programs that interact with remote repositories -when the repository they would operate on will be accessed using -transport code not linked into the main git binary. Various particular -helper programs will behave as documented here. +Remote helper programs are normally not used directly by end users, +but they are invoked by git when it needs to interact with remote +repositories git does not support natively. A given helper will +implement a subset of the capabilities documented here. When git +needs to interact with a repository using a remote helper, it spawns +the helper as an independent process, sends commands to the helper's +standard input, and expects results from the helper's standard +output. Because a remote helper runs as an independent process from +git, there is no need to re-link git to add a new helper, nor any +need to link the helper with the implementation of git. + +Every helper must support the "capabilities" command, which git will +use to determine what other commands the helper will accept. Other +commands generally concern facilities like discovering and updating +remote refs, transporting objects between the object database and +the remote repository, and updating the local object store. + +Helpers supporting the 'fetch' capability can discover refs from the +remote repository and transfer objects reachable from those refs to +the local object store. Helpers supporting the 'push' capability can +transfer local objects to the remote repository and update remote refs. + +Git comes with a "curl" family of remote helpers, that handle various +transport protocols, such as 'git-remote-http', 'git-remote-https', +'git-remote-ftp' and 'git-remote-ftps'. They implement the capabilities +'fetch', 'option', and 'push'. COMMANDS -------- From 5ce4f4e3bf9894ae5a00c7b4f0ba7ba6d953b008 Mon Sep 17 00:00:00 2001 From: Ramkumar Ramachandra Date: Tue, 6 Apr 2010 14:08:19 +0530 Subject: [PATCH 19/23] Documentation/urls: Rewrite to accomodate ::
Rewrite the first part of the document to explicitly show differences between the URLs that can be used with different transport protocols. Mention ::
format to explicitly invoke a remote helper. Signed-off-by: Ramkumar Ramachandra Reviewed-by: Jonathan Nieder Acked-by: Sverre Rabbelier Signed-off-by: Junio C Hamano --- Documentation/urls.txt | 59 ++++++++++++++++++++++++++---------------- 1 file changed, 36 insertions(+), 23 deletions(-) diff --git a/Documentation/urls.txt b/Documentation/urls.txt index 459a394dc0..1dcd1e7f1e 100644 --- a/Documentation/urls.txt +++ b/Documentation/urls.txt @@ -1,44 +1,57 @@ GIT URLS[[URLS]] ---------------- -One of the following notations can be used -to name the remote repository: +In general, URLs contain information about the transport protocol, the +address of the remote server, and the path to the repository. +Depending on the transport protocol, some of this information may be +absent. + +Git natively supports ssh, git, http, https, ftp, ftps, and rsync +protocols. The following syntaxes may be used with them: -- rsync://host.xz/path/to/repo.git/ -- http://host.xz{startsb}:port{endsb}/path/to/repo.git/ -- https://host.xz{startsb}:port{endsb}/path/to/repo.git/ -- git://host.xz{startsb}:port{endsb}/path/to/repo.git/ -- git://host.xz{startsb}:port{endsb}/~user/path/to/repo.git/ - ssh://{startsb}user@{endsb}host.xz{startsb}:port{endsb}/path/to/repo.git/ -- ssh://{startsb}user@{endsb}host.xz/path/to/repo.git/ -- ssh://{startsb}user@{endsb}host.xz/~user/path/to/repo.git/ -- ssh://{startsb}user@{endsb}host.xz/~/path/to/repo.git +- git://host.xz{startsb}:port{endsb}/path/to/repo.git/ +- http{startsb}s{endsb}://host.xz{startsb}:port{endsb}/path/to/repo.git/ +- ftp{startsb}s{endsb}://host.xz{startsb}:port{endsb}/path/to/repo.git/ +- rsync://host.xz/path/to/repo.git/ -SSH is the default transport protocol over the network. You can -optionally specify which user to log-in as, and an alternate, -scp-like syntax is also supported. Both syntaxes support -username expansion, as does the native git protocol, but -only the former supports port specification. The following -three are identical to the last three above, respectively: +An alternative scp-like syntax may also be used with the ssh protocol: -- {startsb}user@{endsb}host.xz:/path/to/repo.git/ -- {startsb}user@{endsb}host.xz:~user/path/to/repo.git/ -- {startsb}user@{endsb}host.xz:path/to/repo.git +- {startsb}user@{endsb}host.xz:path/to/repo.git/ -To sync with a local directory, you can use: +The ssh and git protocols additionally support ~username expansion: + +- ssh://{startsb}user@{endsb}host.xz{startsb}:port{endsb}/~{startsb}user{endsb}/path/to/repo.git/ +- git://host.xz{startsb}:port{endsb}/~{startsb}user{endsb}/path/to/repo.git/ +- {startsb}user@{endsb}host.xz:/~{startsb}user{endsb}/path/to/repo.git/ + +For local respositories, also supported by git natively, the following +syntaxes may be used: - /path/to/repo.git/ - file:///path/to/repo.git/ ifndef::git-clone[] -They are mostly equivalent, except when cloning. See -linkgit:git-clone[1] for details. +These two syntaxes are mostly equivalent, except when cloning, when +the former implies --local option. See linkgit:git-clone[1] for +details. endif::git-clone[] ifdef::git-clone[] -They are equivalent, except the former implies --local option. +These two syntaxes are mostly equivalent, except the former implies +--local option. endif::git-clone[] +When git doesn't know how to handle a certain transport protocol, it +attempts to use the 'remote-' remote helper, if one +exists. To explicitly request a remote helper, the following syntax +may be used: + +- ::
+ +where
may be a path, a server and path, or an arbitrary +URL-like string recognized by the specific remote helper being +invoked. See linkgit:git-remote-helpers[1] for details. If there are a large number of similarly-named remote repositories and you want to use a different format for them (such that the URLs you From b6c8d2d663234a2383cbe4634de93ca03f4717e1 Mon Sep 17 00:00:00 2001 From: Ramkumar Ramachandra Date: Wed, 7 Apr 2010 11:14:41 +0530 Subject: [PATCH 20/23] Documentation/remote-helpers: Add invocation section Add an 'Invocation' section to specify what the command line arguments mean. Also include a link to git-remote in the 'See Also' section. Signed-off-by: Ramkumar Ramachandra Acked-by: Sverre Rabbelier Signed-off-by: Junio C Hamano --- Documentation/git-remote-helpers.txt | 35 +++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/Documentation/git-remote-helpers.txt b/Documentation/git-remote-helpers.txt index 9d86c2679a..1b66f57b44 100644 --- a/Documentation/git-remote-helpers.txt +++ b/Documentation/git-remote-helpers.txt @@ -7,7 +7,7 @@ git-remote-helpers - Helper programs to interact with remote repositories SYNOPSIS -------- -'git remote-' +'git remote-' [] DESCRIPTION ----------- @@ -39,6 +39,35 @@ transport protocols, such as 'git-remote-http', 'git-remote-https', 'git-remote-ftp' and 'git-remote-ftps'. They implement the capabilities 'fetch', 'option', and 'push'. +INVOCATION +---------- + +Remote helper programs are invoked with one or (optionally) two +arguments. The first argument specifies a remote repository as in git; +it is either the name of a configured remote or a URL. The second +argument specifies a URL of the form '://
' or +'::
', where '
' may be an arbitrary +string. + +When git encounters a URL of the form '://
', where +'' is a protocol that it cannot handle natively, it +automatically invokes 'git remote-' with the full URL as +the second argument. If such a URL is encountered directly on the +command line, the first argument is the same as the second, and if it +is encountered in a configured remote, the first argument is the name +of that remote. + +A URL of the form '::
' explicitly instructs git to +invoke 'git remote-' with '
' as the second +argument. If such a URL is encountered directly on the command line, +the first argument is '
', and if it is encountered in a +configured remote, the first argument is the name of that remote. + +Additionally, when a configured remote has 'remote..vcs' set to +'', git explicitly invokes 'git remote-' with +'' as the first argument. If set, the second argument is +'remote..url'; otherwise, the second argument is omitted. + COMMANDS -------- @@ -212,6 +241,10 @@ OPTIONS helper MUST NOT rely on this option being set before connect request occurs. +SEE ALSO +-------- +linkgit:git-remote[1] + Documentation ------------- Documentation by Daniel Barkalow and Ilari Liusvaara From 272a36b67b0df4725f3e28f3302f45274b39012f Mon Sep 17 00:00:00 2001 From: Ramkumar Ramachandra Date: Sun, 18 Apr 2010 06:26:37 +0530 Subject: [PATCH 21/23] Fixup: Second argument may be any arbitrary string This is intended to be a fixup for commit ad466d1 in pu. As Jonathan Neider pointed out, the second argument may be any arbitrary string, and need not conform to any URL-like shape. Signed-off-by: Ramkumar Ramachandra Acked-by: Sverre Rabbelier Signed-off-by: Junio C Hamano --- Documentation/git-remote-helpers.txt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Documentation/git-remote-helpers.txt b/Documentation/git-remote-helpers.txt index 1b66f57b44..2dd70031cb 100644 --- a/Documentation/git-remote-helpers.txt +++ b/Documentation/git-remote-helpers.txt @@ -45,9 +45,8 @@ INVOCATION Remote helper programs are invoked with one or (optionally) two arguments. The first argument specifies a remote repository as in git; it is either the name of a configured remote or a URL. The second -argument specifies a URL of the form '://
' or -'::
', where '
' may be an arbitrary -string. +argument specifies a URL; it is usually of the form +'://
', but any arbitrary string is possible. When git encounters a URL of the form '://
', where '' is a protocol that it cannot handle natively, it From d43427d3d9134524d3ebbe176e30cea38f2a0818 Mon Sep 17 00:00:00 2001 From: Ramkumar Ramachandra Date: Sun, 18 Apr 2010 06:27:37 +0530 Subject: [PATCH 22/23] Documentation/remote-helpers: Fix typos and improve language Fix some typos and errors in grammar and tense. Signed-off-by: Ramkumar Ramachandra Acked-by: Sverre Rabbelier Signed-off-by: Junio C Hamano --- Documentation/git-remote-helpers.txt | 51 +++++++++++++--------------- 1 file changed, 23 insertions(+), 28 deletions(-) diff --git a/Documentation/git-remote-helpers.txt b/Documentation/git-remote-helpers.txt index 2dd70031cb..3a23477ce7 100644 --- a/Documentation/git-remote-helpers.txt +++ b/Documentation/git-remote-helpers.txt @@ -74,8 +74,8 @@ Commands are given by the caller on the helper's standard input, one per line. 'capabilities':: Lists the capabilities of the helper, one per line, ending - with a blank line. Each capability may be preceded with '*'. - This marks them mandatory for git version using the remote + with a blank line. Each capability may be preceded with '*', + which marks them mandatory for git version using the remote helper to understand (unknown mandatory capability is fatal error). @@ -84,27 +84,27 @@ Commands are given by the caller on the helper's standard input, one per line. [ ...]". The value may be a hex sha1 hash, "@" for a symref, or "?" to indicate that the helper could not get the value of the ref. A space-separated list of attributes follows - the name; unrecognized attributes are ignored. After the - complete list, outputs a blank line. + the name; unrecognized attributes are ignored. The list ends + with a blank line. + If 'push' is supported this may be called as 'list for-push' to obtain the current refs prior to sending one or more 'push' commands to the helper. 'option' :: - Set the transport helper option to . Outputs a + Sets the transport helper option to . Outputs a single line containing one of 'ok' (option successfully set), 'unsupported' (option not recognized) or 'error ' - (option is supported but is not correct + (option is supported but is not valid for it). Options should be set before other commands, - and may how those commands behave. + and may influence the behavior of those commands. + Supported if the helper has the "option" capability. 'fetch' :: Fetches the given object, writing the necessary objects to the database. Fetch commands are sent in a batch, one - per line, and the batch is terminated with a blank line. + per line, terminated with a blank line. Outputs a single blank line when all fetch commands in the same batch are complete. Only objects which were reported in the ref list with a sha1 may be fetched this way. @@ -116,7 +116,7 @@ suitably updated. Supported if the helper has the "fetch" capability. 'push' +::: - Pushes the given commit or branch locally to the + Pushes the given local commit or branch to the remote branch described by . A batch sequence of one or more push commands is terminated with a blank line. + @@ -140,6 +140,9 @@ Supported if the helper has the "push" capability. by applying the refspecs from the "refspec" capability to the name of the ref. + +Especially useful for interoperability with a foreign versioning +system. ++ Supported if the helper has the "import" capability. 'connect' :: @@ -168,16 +171,11 @@ CAPABILITIES ------------ 'fetch':: - This helper supports the 'fetch' command. - 'option':: - This helper supports the option command. - 'push':: - This helper supports the 'push' command. - 'import':: - This helper supports the 'import' command. +'connect':: + This helper supports the corresponding command with the same name. 'refspec' 'spec':: When using the import command, expect the source ref to have @@ -189,9 +187,6 @@ CAPABILITIES all, it must cover all refs reported by the list command; if it is not used, it is effectively "*:*" -'connect':: - This helper supports the 'connect' command. - REF LIST ATTRIBUTES ------------------- @@ -207,19 +202,19 @@ REF LIST ATTRIBUTES OPTIONS ------- 'option verbosity' :: - Change the level of messages displayed by the helper. - When N is 0 the end-user has asked the process to be - quiet, and the helper should produce only error output. - N of 1 is the default level of verbosity, higher values + Changes the verbosity of messages displayed by the helper. + A value of 0 for N means that processes operate + quietly, and the helper produces only error output. + 1 is the default level of verbosity, and higher values of N correspond to the number of -v flags passed on the command line. 'option progress' \{'true'|'false'\}:: - Enable (or disable) progress messages displayed by the + Enables (or disables) progress messages displayed by the transport helper during a command. 'option depth' :: - Deepen the history of a shallow repository. + Deepens the history of a shallow repository. 'option followtags' \{'true'|'false'\}:: If enabled the helper should automatically fetch annotated @@ -235,9 +230,9 @@ OPTIONS helpers this only applies to the 'push', if supported. 'option servpath ':: - Set service path (--upload-pack, --receive-pack etc.) for - next connect. Remote helper MAY support this option. Remote - helper MUST NOT rely on this option being set before + Sets service path (--upload-pack, --receive-pack etc.) for + next connect. Remote helper may support this option, but + must not rely on this option being set before connect request occurs. SEE ALSO From 5469e2dab133a197dc2ca2fa47eb9e846ac19b66 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 18 Apr 2010 22:19:04 -0700 Subject: [PATCH 23/23] Git 1.7.1-rc2 Signed-off-by: Junio C Hamano --- Documentation/RelNotes-1.7.1.txt | 9 ++++++++- GIT-VERSION-GEN | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Documentation/RelNotes-1.7.1.txt b/Documentation/RelNotes-1.7.1.txt index 95c5ed6016..10389adb4a 100644 --- a/Documentation/RelNotes-1.7.1.txt +++ b/Documentation/RelNotes-1.7.1.txt @@ -6,6 +6,8 @@ Updates since v1.7.0 * Eric Raymond is the maintainer of updated CIAbot scripts, in contrib/. + * gitk updates. + * Some commands (e.g. svn and http interfaces) that interactively ask for a password can be told to use an external program given via GIT_ASKPASS. @@ -66,6 +68,8 @@ Updates since v1.7.0 * "gitweb" installation procedure can use "minified" js/css files better. + * Various documentation updates. + Fixes since v1.7.0 ------------------ @@ -75,6 +79,9 @@ release, unless otherwise noted. * "git add frotz/nitfol" did not complain when the entire frotz/ directory was ignored. + * "git diff --stat" used "int" to count the size of differences, + which could result in overflowing. + * "git rev-list --pretty=oneline" didn't terminate a record with LF for commits without any message. @@ -84,5 +91,5 @@ release, unless otherwise noted. --- exec >/var/tmp/1 echo O=$(git describe) -O=v1.7.1-rc0-36-gb92cbb6 +O=v1.7.1-rc1-49-g407a963 git shortlog --no-merges ^maint $O.. diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN index e5b1111a37..1063945c30 100755 --- a/GIT-VERSION-GEN +++ b/GIT-VERSION-GEN @@ -1,7 +1,7 @@ #!/bin/sh GVF=GIT-VERSION-FILE -DEF_VER=v1.7.1.rc1.GIT +DEF_VER=v1.7.1.rc2 LF=' '