Junio C Hamano [Tue, 20 Nov 2012 18:37:27 +0000 (10:37 -0800)]
Merge branch 'jk/maint-gitweb-xss'
Fixes an XSS vulnerability in gitweb.
* jk/maint-gitweb-xss:
gitweb: escape html in rss title
Junio C Hamano [Tue, 20 Nov 2012 18:35:53 +0000 (10:35 -0800)]
Merge branch 'rh/maint-gitweb-highlight-ext'
Fixes a clever misuse of perl's list interpretation.
* rh/maint-gitweb-highlight-ext:
gitweb.perl: fix %highlight_ext mappings
Junio C Hamano [Tue, 20 Nov 2012 18:34:15 +0000 (10:34 -0800)]
Merge branch 'pw/maint-p4-rcs-expansion-newline'
I do not have p4 to play with, but looks obviously correct to me.
* pw/maint-p4-rcs-expansion-newline:
git p4: RCS expansion should not span newlines
Junio C Hamano [Tue, 20 Nov 2012 18:34:08 +0000 (10:34 -0800)]
Merge branch 'mh/alt-odb-string-list-cleanup'
Cleanups in the alternates code. Fixes a potential bug and makes the
code much cleaner.
* mh/alt-odb-string-list-cleanup:
link_alt_odb_entries(): take (char *, len) rather than two pointers
link_alt_odb_entries(): use string_list_split_in_place()
Junio C Hamano [Tue, 20 Nov 2012 18:32:58 +0000 (10:32 -0800)]
Merge branch 'ta/doc-cleanup'
* ta/doc-cleanup:
Documentation: build html for all files in technical and howto
Documentation/howto: convert plain text files to asciidoc
Documentation/technical: convert plain text files to asciidoc
Change headline of technical/send-pack-pipeline.txt to not confuse its content with content from git-send-pack.txt
Shorten two over-long lines in git-bisect-lk2009.txt by abbreviating some sha1
Split over-long synopsis in git-fetch-pack.txt into several lines
Junio C Hamano [Tue, 20 Nov 2012 18:32:10 +0000 (10:32 -0800)]
Merge branch 'kb/preload-index-more'
Use preloadindex in more places, which has a nice speedup on systems
with slow stat calls (and even on Linux).
* kb/preload-index-more:
update-index/diff-index: use core.preloadindex to improve performance
Junio C Hamano [Tue, 20 Nov 2012 18:30:17 +0000 (10:30 -0800)]
Merge branch 'jk/maint-http-half-auth-fetch'
Fixes fetch from servers that ask for auth only during the actual
packing phase. This is not really a recommended configuration, but it
cleans up the code at the same time.
* jk/maint-http-half-auth-fetch:
remote-curl: retry failed requests for auth even with gzip
remote-curl: hoist gzip buffer size to top of post_rpc
Junio C Hamano [Tue, 20 Nov 2012 18:16:34 +0000 (10:16 -0800)]
Sync with maint
* maint:
Further preparation for 1.8.0.1
Junio C Hamano [Tue, 20 Nov 2012 18:16:14 +0000 (10:16 -0800)]
Further preparation for 1.8.0.1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Tue, 20 Nov 2012 18:15:09 +0000 (10:15 -0800)]
Merge branch 'mg/maint-pull-suggest-upstream-to' into maint
* mg/maint-pull-suggest-upstream-to:
push/pull: adjust missing upstream help text to changed interface
Junio C Hamano [Tue, 20 Nov 2012 18:14:55 +0000 (10:14 -0800)]
Merge branch 'mm/maint-doc-commit-edit' into maint
* mm/maint-doc-commit-edit:
Document 'git commit --no-edit' explicitly
Junio C Hamano [Tue, 20 Nov 2012 18:14:46 +0000 (10:14 -0800)]
Merge branch 'as/maint-doc-fix-no-post-rewrite' into maint
* as/maint-doc-fix-no-post-rewrite:
commit: fixup misplacement of --no-post-rewrite description
Junio C Hamano [Tue, 20 Nov 2012 18:14:41 +0000 (10:14 -0800)]
Merge branch 'rs/lock-correct-ref-during-delete' into maint
* rs/lock-correct-ref-during-delete:
refs: lock symref that is to be deleted, not its target
Junio C Hamano [Tue, 20 Nov 2012 18:14:28 +0000 (10:14 -0800)]
Merge branch 'rf/maint-mailmap-off-by-one' into maint
* rf/maint-mailmap-off-by-one:
mailmap: avoid out-of-bounds memory access
Junio C Hamano [Tue, 20 Nov 2012 18:03:12 +0000 (10:03 -0800)]
Merge branch 'jk/maint-diff-grep-textconv' into maint
"git diff -G<pattern>" did not honor textconv filter when looking
for changes.
* jk/maint-diff-grep-textconv:
diff_grep: use textconv buffers for add/deleted files
Junio C Hamano [Tue, 20 Nov 2012 17:57:44 +0000 (09:57 -0800)]
Merge branch 'js/format-2047' into maint
Various rfc2047 quoting issues around a non-ASCII name on the From:
line in the output from format-patch have been corrected.
* js/format-2047:
format-patch tests: check quoting/encoding in To: and Cc: headers
format-patch: fix rfc2047 address encoding with respect to rfc822 specials
format-patch: make rfc2047 encoding more strict
format-patch: introduce helper function last_line_length()
format-patch: do not wrap rfc2047 encoded headers too late
format-patch: do not wrap non-rfc2047 headers too early
utf8: fix off-by-one wrapping of text
Junio C Hamano [Mon, 19 Nov 2012 03:48:31 +0000 (19:48 -0800)]
Sync with maint
Junio C Hamano [Mon, 19 Nov 2012 03:47:19 +0000 (19:47 -0800)]
Start preparing for 1.8.0.1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Mon, 19 Nov 2012 03:44:36 +0000 (19:44 -0800)]
Merge branch 'sz/maint-curl-multi-timeout' into maint
Sometimes curl_multi_timeout() function suggested a wrong timeout
value when there is no file descriptors to wait on and the http
transport ended up sleeping for minutes in select(2) system call. A
workaround has been added for this.
* sz/maint-curl-multi-timeout:
Fix potential hang in https handshake
Junio C Hamano [Mon, 19 Nov 2012 03:34:09 +0000 (19:34 -0800)]
Merge branch 'po/maint-refs-replace-docs' into maint
The refs/replace hierarchy was not mentioned in the
repository-layout docs.
* po/maint-refs-replace-docs:
Doc repository-layout: Show refs/replace
Junio C Hamano [Mon, 19 Nov 2012 03:33:45 +0000 (19:33 -0800)]
Merge branch 'ph/pull-rebase-detached' into maint
"git pull --rebase" run while the HEAD is detached tried to find
the upstream branch of the detached HEAD (which by definition
does not exist) and emitted unnecessary error messages.
* ph/pull-rebase-detached:
git-pull: Avoid merge-base on detached head
Junio C Hamano [Mon, 19 Nov 2012 03:33:20 +0000 (19:33 -0800)]
Merge branch 'mm/maint-doc-remote-tracking' into maint
Update "remote tracking branch" in the documentation to
"remote-tracking branch".
* mm/maint-doc-remote-tracking:
Documentation: remote tracking branch -> remote-tracking branch
Junio C Hamano [Mon, 19 Nov 2012 03:32:58 +0000 (19:32 -0800)]
Merge branch 'rs/branch-del-symref' into maint
A symbolic ref refs/heads/SYM was not correctly removed with "git
branch -d SYM"; the command removed the ref pointed by SYM instead.
* rs/branch-del-symref:
branch: show targets of deleted symrefs, not sha1s
branch: skip commit checks when deleting symref branches
branch: delete symref branch, not its target
branch: factor out delete_branch_config()
branch: factor out check_branch_commit()
Junio C Hamano [Mon, 19 Nov 2012 03:32:30 +0000 (19:32 -0800)]
Merge branch 'nd/grep-true-path' into maint
"git grep -e pattern <tree>" asked the attribute system to read
"<tree>:.gitattributes" file in the working tree, which was
nonsense.
* nd/grep-true-path:
grep: stop looking at random places for .gitattributes
Junio C Hamano [Mon, 19 Nov 2012 03:32:11 +0000 (19:32 -0800)]
Merge branch 'jc/grep-pcre-loose-ends' (early part) into maint
"git log -F -E --grep='<ere>'" failed to use the given <ere>
pattern as extended regular expression, and instead looked for the
string literally.
* 'jc/grep-pcre-loose-ends' (early part):
log --grep: use the same helper to set -E/-F options as "git grep"
revisions: initialize revs->grep_filter using grep_init()
grep: move pattern-type bits support to top-level grep.[ch]
grep: move the configuration parsing logic to grep.[ch]
builtin/grep.c: make configuration callback more reusable
Junio C Hamano [Mon, 19 Nov 2012 03:31:40 +0000 (19:31 -0800)]
Merge branch 'da/mergetools-p4' into maint
"git mergetool" feeds /dev/null as a common ancestor when dealing
with an add/add conflict, but p4merge backend cannot handle it. Work
it around by passing a temporary empty file.
* da/mergetools-p4:
mergetools/p4merge: Handle "/dev/null"
Junio C Hamano [Mon, 19 Nov 2012 03:31:13 +0000 (19:31 -0800)]
Merge branch 'jc/test-say-color-avoid-echo-escape' into maint
The "say" function in the test scaffolding incorrectly allowed
"echo" to interpret "\a" as if it were a C-string asking for a BEL
output.
* jc/test-say-color-avoid-echo-escape:
test-lib: Fix say_color () not to interpret \a\b\c in the message
Junio C Hamano [Mon, 19 Nov 2012 03:29:44 +0000 (19:29 -0800)]
Merge branch 'bw/config-lift-variable-name-length-limit' into maint
The configuration parser had an unnecessary hardcoded limit on
variable names that was not checked consistently.
* bw/config-lift-variable-name-length-limit:
Remove the hard coded length limit on variable names in config files
Junio C Hamano [Thu, 15 Nov 2012 19:21:47 +0000 (11:21 -0800)]
Start 1.8.1 cycle
Prepare the release notes for the upcoming release, and describe
changes up to the 5th batch we just merged.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Thu, 15 Nov 2012 18:25:05 +0000 (10:25 -0800)]
Merge branch 'jc/prettier-pretty-note'
Emit the notes attached to the commit in "format-patch --notes"
output after three-dashes.
* jc/prettier-pretty-note:
format-patch: add a blank line between notes and diffstat
Doc User-Manual: Patch cover letter, three dashes, and --notes
Doc format-patch: clarify --notes use case
Doc notes: Include the format-patch --notes option
Doc SubmittingPatches: Mention --notes option after "cover letter"
Documentation: decribe format-patch --notes
format-patch --notes: show notes after three-dashes
format-patch: append --signature after notes
pretty_print_commit(): do not append notes message
pretty: prepare notes message at a centralized place
format_note(): simplify API
pretty: remove reencode_commit_message()
Junio C Hamano [Thu, 15 Nov 2012 18:24:59 +0000 (10:24 -0800)]
Merge branch 'mg/maint-pull-suggest-upstream-to'
Follow-on to the new "--set-upstream-to" topic from v1.8.0 to avoid
suggesting the deprecated "--set-upstream".
* mg/maint-pull-suggest-upstream-to:
push/pull: adjust missing upstream help text to changed interface
Junio C Hamano [Thu, 15 Nov 2012 18:24:53 +0000 (10:24 -0800)]
Merge branch 'mh/notes-string-list'
Improve the asymptotic performance of the cat_sort_uniq notes merge
strategy.
* mh/notes-string-list:
string_list_add_refs_from_colon_sep(): use string_list_split()
notes: fix handling of colon-separated values
combine_notes_cat_sort_uniq(): sort and dedup lines all at once
Initialize sort_uniq_list using named constant
string_list: add a function string_list_remove_empty_items()
Junio C Hamano [Thu, 15 Nov 2012 18:24:49 +0000 (10:24 -0800)]
Merge branch 'mh/strbuf-split'
Cleanups and documentation for strbuf_split.
* mh/strbuf-split:
strbuf_split*(): document functions
strbuf_split*(): rename "delim" parameter to "terminator"
strbuf_split_buf(): simplify iteration
strbuf_split_buf(): use ALLOC_GROW()
Junio C Hamano [Thu, 15 Nov 2012 18:24:44 +0000 (10:24 -0800)]
Merge branch 'mm/maint-doc-commit-edit'
* mm/maint-doc-commit-edit:
Document 'git commit --no-edit' explicitly
Junio C Hamano [Thu, 15 Nov 2012 18:24:29 +0000 (10:24 -0800)]
Merge branch 'as/maint-doc-fix-no-post-rewrite'
* as/maint-doc-fix-no-post-rewrite:
commit: fixup misplacement of --no-post-rewrite description
Junio C Hamano [Thu, 15 Nov 2012 18:24:13 +0000 (10:24 -0800)]
Merge branch 'js/hp-nonstop'
Finishing touches to port to HP NonStop continues.
* js/hp-nonstop:
fix 'make test' for HP NonStop
Junio C Hamano [Thu, 15 Nov 2012 18:24:09 +0000 (10:24 -0800)]
Merge branch 'cr/cvsimport-local-zone'
Allows "cvsimport" to read per-author timezone from the author info
file.
* cr/cvsimport-local-zone:
cvsimport: work around perl tzset issue
git-cvsimport: allow author-specific timezones
Junio C Hamano [Thu, 15 Nov 2012 18:24:05 +0000 (10:24 -0800)]
Merge branch 'jc/same-encoding'
Various codepaths checked if two encoding names are the same using
ad-hoc code and some of them ended up asking iconv() to convert
between "utf8" and "UTF-8". The former is not a valid way to spell
the encoding name, but often people use it by mistake, and we
equated them in some but not all codepaths. Introduce a new helper
function to make these codepaths consistent.
* jc/same-encoding:
reencode_string(): introduce and use same_encoding()
Conflicts:
builtin/mailinfo.c
Junio C Hamano [Thu, 15 Nov 2012 18:24:01 +0000 (10:24 -0800)]
Merge branch 'ph/submodule-sync-recursive'
Adds "--recursive" option to submodule sync.
* ph/submodule-sync-recursive:
Add tests for submodule sync --recursive
Teach --recursive to submodule sync
Junio C Hamano [Thu, 15 Nov 2012 18:23:57 +0000 (10:23 -0800)]
Merge branch 'jk/maint-diff-grep-textconv'
Fixes inconsistent use of textconv with "git log -G".
* jk/maint-diff-grep-textconv:
diff_grep: use textconv buffers for add/deleted files
Junio C Hamano [Thu, 15 Nov 2012 18:23:51 +0000 (10:23 -0800)]
Merge branch 'jh/symbolic-ref-d'
Add "symbolic-ref -d SYM" to delete a symbolic ref SYM.
It is already possible to remove a symbolic ref with "update-ref -d
--no-deref", but it may be a good addition for completeness.
* jh/symbolic-ref-d:
git symbolic-ref --delete $symref
Junio C Hamano [Thu, 15 Nov 2012 18:22:54 +0000 (10:22 -0800)]
Merge branch 'jc/maint-fetch-tighten-refname-check'
For a fetch refspec (or the result of applying wildcard on one), we
always want the RHS to map to something inside "refs/" hierarchy.
This was split out from discarded jc/maint-push-refs-all topic.
* jc/maint-fetch-tighten-refname-check:
get_fetch_map(): tighten checks on dest refs
Junio C Hamano [Tue, 13 Nov 2012 18:09:07 +0000 (10:09 -0800)]
format-patch: add a blank line between notes and diffstat
The last line of the note text comes immediately before the diffstat
block, making the latter unnecessarily harder to view.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King [Mon, 12 Nov 2012 21:34:28 +0000 (16:34 -0500)]
gitweb: escape html in rss title
The title of an RSS feed is generated from many components,
including the filename provided as a query parameter, but we
failed to quote it. Besides showing the wrong output, this
is a vector for XSS attacks.
Signed-off-by: Jeff King <peff@peff.net>
Jeff King [Fri, 9 Nov 2012 17:51:15 +0000 (12:51 -0500)]
Merge branch 'ph/maint-submodule-status-fix'
Cleans up some leftover bits from an earlier submodule change.
* ph/maint-submodule-status-fix:
submodule status: remove unused orig_* variables
t7407: Fix recursive submodule test
Jeff King [Fri, 9 Nov 2012 17:51:06 +0000 (12:51 -0500)]
Merge branch 'nd/builtin-to-libgit'
Code cleanups so that libgit.a does not depend on anything in the
builtin/ directory.
* nd/builtin-to-libgit:
fetch-pack: move core code to libgit.a
fetch-pack: remove global (static) configuration variable "args"
send-pack: move core code to libgit.a
Move setup_diff_pager to libgit.a
Move print_commit_list to libgit.a
Move estimate_bisect_steps to libgit.a
Move try_merge_command and checkout_fast_forward to libgit.a
Jeff King [Fri, 9 Nov 2012 17:51:02 +0000 (12:51 -0500)]
Merge branch 'nd/tree-walk-enum-cleanup'
* nd/tree-walk-enum-cleanup:
tree-walk: use enum interesting instead of integer
Jeff King [Fri, 9 Nov 2012 17:50:56 +0000 (12:50 -0500)]
Merge branch 'sz/maint-curl-multi-timeout'
Sometimes curl_multi_timeout() function suggested a wrong timeout
value when there is no file descriptors to wait on and the http
transport ended up sleeping for minutes in select(2) system call.
Detect this and reduce the wait timeout in such a case.
* sz/maint-curl-multi-timeout:
Fix potential hang in https handshake
Jeff King [Fri, 9 Nov 2012 17:50:45 +0000 (12:50 -0500)]
Merge branch 'fc/completion-send-email-with-format-patch'
* fc/completion-send-email-with-format-patch:
completion: add format-patch options to send-email
Jeff King [Fri, 9 Nov 2012 17:50:36 +0000 (12:50 -0500)]
Merge branch 'mo/cvs-server-cleanup'
Cleanups to prepare for mo/cvs-server-updates.
* mo/cvs-server-cleanup:
Use character class for sed expression instead of \s
cvsserver status: provide real sticky info
cvsserver: cvs add: do not expand directory arguments
cvsserver: use whole CVS rev number in-process; don't strip "1." prefix
cvsserver: split up long lines in req_{status,diff,log}
cvsserver: clean up client request handler map comments
cvsserver: remove unused functions _headrev and gethistory
cvsserver update: comment about how we shouldn't remove a user-modified file
cvsserver: add comments about database schema/usage
cvsserver: removed unused sha1Or-k mode from kopts_from_path
cvsserver t9400: add basic 'cvs log' test
Jeff King [Fri, 9 Nov 2012 17:50:29 +0000 (12:50 -0500)]
Merge branch 'km/send-email-compose-encoding'
"git send-email --compose" can let the user create a non-ascii
cover letter message, but there was not a way to mark it with
appropriate content type before sending it out.
Further updates fix subject quoting.
* km/send-email-compose-encoding:
git-send-email: add rfc2047 quoting for "=?"
git-send-email: introduce quote_subject()
git-send-email: skip RFC2047 quoting for ASCII subjects
git-send-email: use compose-encoding for Subject
git-send-email: introduce compose-encoding
Jeff King [Fri, 9 Nov 2012 17:42:32 +0000 (12:42 -0500)]
Merge branch 'js/format-2047'
Fixes many rfc2047 quoting issues in the output from format-patch.
* js/format-2047:
format-patch tests: check quoting/encoding in To: and Cc: headers
format-patch: fix rfc2047 address encoding with respect to rfc822 specials
format-patch: make rfc2047 encoding more strict
format-patch: introduce helper function last_line_length()
format-patch: do not wrap rfc2047 encoded headers too late
format-patch: do not wrap non-rfc2047 headers too early
utf8: fix off-by-one wrapping of text
Jeff King [Fri, 9 Nov 2012 17:42:28 +0000 (12:42 -0500)]
Merge branch 'rs/lock-correct-ref-during-delete'
When "update-ref -d --no-deref SYM" tried to delete a symbolic ref
SYM, it incorrectly locked the underlying reference pointed by SYM,
not the symbolic ref itself.
* rs/lock-correct-ref-during-delete:
refs: lock symref that is to be deleted, not its target
Jeff King [Fri, 9 Nov 2012 17:42:25 +0000 (12:42 -0500)]
Merge branch 'nd/attr-match-optim-more'
Start laying the foundation to build the "wildmatch" after we can
agree on its desired semantics.
* nd/attr-match-optim-more:
attr: more matching optimizations from .gitignore
gitignore: make pattern parsing code a separate function
exclude: split pathname matching code into a separate function
exclude: fix a bug in prefix compare optimization
exclude: split basename matching code into a separate function
exclude: stricten a length check in EXC_FLAG_ENDSWITH case
Jeff King [Fri, 9 Nov 2012 17:42:21 +0000 (12:42 -0500)]
Merge branch 'mh/maint-parse-dirstat-fix'
Cleans up some code and avoids a potential bug.
* mh/maint-parse-dirstat-fix:
parse_dirstat_params(): use string_list to split comma-separated string
Richard Hubbell [Sun, 4 Nov 2012 17:45:55 +0000 (09:45 -0800)]
gitweb.perl: fix %highlight_ext mappings
When commit
592ea41 refactored the list of extensions for
syntax highlighting, it failed to take into account perl's
operator precedence within lists. As a result, we end up
creating a dictionary of one-to-one elements when the intent
was to map mutliple related types to one main type (e.g.,
bash, ksh, zsh, and sh should all map to sh since they share
similar syntax, but we ended up just mapping "bash" to
"bash" and so forth).
This patch adds parentheses to make the mapping as the
original change intended. It also reorganizes the list to
keep mapped extensions together.
Signed-off-by: Richard Hubbell <richard_hubbe11@lavabit.com>
Signed-off-by: Jeff King <peff@peff.net>
Pete Wyckoff [Sun, 4 Nov 2012 22:04:02 +0000 (17:04 -0500)]
git p4: RCS expansion should not span newlines
This bug was introduced in
cb585a9 (git-p4: keyword
flattening fixes, 2011-10-16). The newline character
is indeed special, and $File$ expansions should not try
to match across multiple lines.
Based-on-patch-by: Chris Goard <cgoard@gmail.com>
Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Jeff King <peff@peff.net>
Michael Haggerty [Mon, 5 Nov 2012 08:41:23 +0000 (09:41 +0100)]
link_alt_odb_entries(): take (char *, len) rather than two pointers
Change link_alt_odb_entries() to take the length of the "alt"
parameter rather than a pointer to the end of the "alt" string. This
is the more common calling convention and simplifies the code a tiny
bit.
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Jeff King <peff@peff.net>
Michael Haggerty [Mon, 5 Nov 2012 08:41:22 +0000 (09:41 +0100)]
link_alt_odb_entries(): use string_list_split_in_place()
Change link_alt_odb_entry() to take a NUL-terminated string instead of
(char *, len). Use string_list_split_in_place() rather than inline
code in link_alt_odb_entries().
This approach saves some code and also avoids the (probably harmless)
error of passing a non-NUL-terminated string to is_absolute_path().
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Jeff King <peff@peff.net>
Michael Haggerty [Sun, 4 Nov 2012 07:07:10 +0000 (08:07 +0100)]
string_list_add_refs_from_colon_sep(): use string_list_split()
It makes for simpler code than strbuf_split().
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Acked-by: Johan Herland <johan@herland.net>
Signed-off-by: Jeff King <peff@peff.net>
Michael Haggerty [Sun, 4 Nov 2012 07:07:09 +0000 (08:07 +0100)]
notes: fix handling of colon-separated values
The substrings output by strbuf_split() include the ':' delimiters.
When processing GIT_NOTES_DISPLAY_REF and GIT_NOTES_REWRITE_REF, strip
off the delimiter character *before* checking whether the substring is
empty rather than after, so that empty strings within the list are
also skipped.
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Acked-by: Johan Herland <johan@herland.net>
Signed-off-by: Jeff King <peff@peff.net>
Michael Haggerty [Sun, 4 Nov 2012 07:07:08 +0000 (08:07 +0100)]
combine_notes_cat_sort_uniq(): sort and dedup lines all at once
Instead of reading lines one by one and insertion-sorting them into a
string_list, read all of the lines, sort them, then remove duplicates.
Aside from being less code, this reduces the complexity from O(N^2) to
O(N lg N) in the total number of lines.
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Acked-by: Johan Herland <johan@herland.net>
Signed-off-by: Jeff King <peff@peff.net>
Michael Haggerty [Sun, 4 Nov 2012 07:07:07 +0000 (08:07 +0100)]
Initialize sort_uniq_list using named constant
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Acked-by: Johan Herland <johan@herland.net>
Signed-off-by: Jeff King <peff@peff.net>
Michael Haggerty [Sun, 4 Nov 2012 07:07:06 +0000 (08:07 +0100)]
string_list: add a function string_list_remove_empty_items()
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Acked-by: Johan Herland <johan@herland.net>
Signed-off-by: Jeff King <peff@peff.net>
Michael J Gruber [Tue, 6 Nov 2012 10:29:01 +0000 (11:29 +0100)]
push/pull: adjust missing upstream help text to changed interface
In case of a missing upstream, the git-parse-remote script suggests:
If you wish to set tracking information for this branch you can do so
with:
git branch --set-upstream nsiv2 origin/<branch>
But --set-upstream is deprectated. Change the suggestion to:
git branch --set-upstream-to=origin/<branch> nsiv2
Reported-by: Jeroen van der Ham <vdham@uva.nl>
Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Jeff King <peff@peff.net>
Junio C Hamano [Fri, 19 Oct 2012 05:41:56 +0000 (22:41 -0700)]
reencode_string(): introduce and use same_encoding()
Callers of reencode_string() that re-encodes a string from one
encoding to another all used ad-hoc way to bypass the case where the
input and the output encodings are the same. Some did strcmp(),
some did strcasecmp(), yet some others when converting to UTF-8 used
is_encoding_utf8().
Introduce same_encoding() helper function to make these callers use
the same logic. Notably, is_encoding_utf8() has a work-around for
common misconfiguration to use "utf8" to name UTF-8 encoding, which
does not match "UTF-8" hence strcasecmp() would not consider the
same. Make use of it in this helper function.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King [Sun, 4 Nov 2012 12:25:36 +0000 (07:25 -0500)]
cvsimport: work around perl tzset issue
On many platforms, the first invocation of localtime_r will
check $TZ in the environment, but subsequent invocations
will use a cached value. That means that setting $ENV{TZ} in
the middle of the program may or may not have an effect on
later calls to localtime. Perl 5.10.0 and later handles
this automatically for us, but we try to remain portable
back to 5.8. Work around it by calling tzset ourselves.
Jeff King [Sun, 4 Nov 2012 13:00:47 +0000 (08:00 -0500)]
Merge branch 'tj/maint-doc-commit-sign'
* tj/maint-doc-commit-sign:
Add -S, --gpg-sign option to manpage of "git commit"
Jeff King [Sun, 4 Nov 2012 13:00:37 +0000 (08:00 -0500)]
Merge branch 'pp/maint-doc-pager-config'
* pp/maint-doc-pager-config:
Documentation: improve the example of overriding LESS via core.pager
Jeff King [Sun, 4 Nov 2012 13:00:33 +0000 (08:00 -0500)]
Merge branch 'km/maint-doc-git-reset'
* km/maint-doc-git-reset:
doc: git-reset: make "<mode>" optional
Jeff King [Sun, 4 Nov 2012 13:00:29 +0000 (08:00 -0500)]
Merge branch 'tb/maint-t9200-case-insensitive'
* tb/maint-t9200-case-insensitive:
Fix t9200 on case insensitive file systems
Jeff King [Sun, 4 Nov 2012 13:00:23 +0000 (08:00 -0500)]
Merge branch 'rf/maint-mailmap-off-by-one'
* rf/maint-mailmap-off-by-one:
mailmap: avoid out-of-bounds memory access
Jeff King [Sun, 4 Nov 2012 13:00:21 +0000 (08:00 -0500)]
Merge branch 'gb/maint-doc-svn-log-window-size'
* gb/maint-doc-svn-log-window-size:
Document git-svn fetch --log-window-size parameter
Jeff King [Sun, 4 Nov 2012 13:00:16 +0000 (08:00 -0500)]
Merge branch 'sz/maint-submodule-reference-arg'
* sz/maint-submodule-reference-arg:
submodule add: fix handling of --reference=<repo> option
Jeff King [Sun, 4 Nov 2012 13:00:13 +0000 (08:00 -0500)]
Merge branch 'sl/maint-configure-messages'
Minor message fixes for the configure script.
* sl/maint-configure-messages:
configure: fix some output message
Jeff King [Sun, 4 Nov 2012 13:00:11 +0000 (08:00 -0500)]
Merge branch 'po/maint-refs-replace-docs'
The refs/replace hierarchy was not mentioned in the
repository-layout docs.
* po/maint-refs-replace-docs:
Doc repository-layout: Show refs/replace
Jeff King [Sun, 4 Nov 2012 13:00:06 +0000 (08:00 -0500)]
Merge branch 'ph/pull-rebase-detached'
Avoids spewing error messages when using "pull --rebase" on a
detached HEAD.
* ph/pull-rebase-detached:
git-pull: Avoid merge-base on detached head
Jeff King [Sun, 4 Nov 2012 12:59:57 +0000 (07:59 -0500)]
Merge branch 'mm/maint-doc-remote-tracking'
We long ago hyphenated "remote-tracking branch"; this
catches some new instances added since then.
* mm/maint-doc-remote-tracking:
Documentation: remote tracking branch -> remote-tracking branch
Michael Haggerty [Sun, 4 Nov 2012 06:46:54 +0000 (07:46 +0100)]
strbuf_split*(): document functions
Document strbuf_split_buf(), strbuf_split_str(), strbuf_split_max(),
strbuf_split(), and strbuf_list_free() in the header file and in
api-strbuf.txt. (These functions were previously completely
undocumented.)
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Jeff King <peff@peff.net>
Michael Haggerty [Sun, 4 Nov 2012 06:46:53 +0000 (07:46 +0100)]
strbuf_split*(): rename "delim" parameter to "terminator"
The word "delimiter" suggests that the argument separates the
substrings, whereas in fact (1) the delimiter characters are included
in the output, and (2) if the input string ends with the delimiter,
then the output does not include a final empty string. So rename the
"delim" arguments of the strbuf_split() family of functions to
"terminator", which is more suggestive of how it is used.
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Jeff King <peff@peff.net>
Michael Haggerty [Sun, 4 Nov 2012 06:46:52 +0000 (07:46 +0100)]
strbuf_split_buf(): simplify iteration
While iterating, update str and slen to keep track of the part of the
string that hasn't been processed yet rather than computing things
relative to the start of the original string. This eliminates one
local variable, reduces the scope of another, and reduces the amount
of arithmetic needed within the loop.
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Jeff King <peff@peff.net>
Michael Haggerty [Sun, 4 Nov 2012 06:46:51 +0000 (07:46 +0100)]
strbuf_split_buf(): use ALLOC_GROW()
Use ALLOC_GROW() rather than inline code to manage memory in
strbuf_split_buf(). Rename "pos" to "nr" because it better describes
the use of the variable and it better conforms to the "ALLOC_GROW"
idiom.
Also, instead of adding a sentinal NULL value after each entry is
added to the list, only add it once after all of the entries have been
added.
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Jeff King <peff@peff.net>
Karsten Blees [Tue, 30 Oct 2012 09:50:42 +0000 (10:50 +0100)]
update-index/diff-index: use core.preloadindex to improve performance
'update-index --refresh' and 'diff-index' (without --cached) don't honor
the core.preloadindex setting yet. Porcelain commands using these (such as
git [svn] rebase) suffer from this, especially on Windows.
Use read_cache_preload to improve performance.
Additionally, in builtin/diff.c, don't preload index status if we don't
access the working copy (--cached).
Results with msysgit on WebKit repo (2GB in 200k files):
| update-index | diff-index | rebase
----------------+--------------+------------+---------
msysgit-v1.8.0 | 9.157s | 10.536s | 42.791s
+ preloadindex | 9.157s | 10.536s | 28.725s
+ this patch | 2.329s | 2.752s | 15.152s
+ fscache [1] | 0.731s | 1.171s | 8.877s
[1] https://github.com/kblees/git/tree/kb/fscache-v3
Thanks-to: Albert Krawczyk <pro-logic@optusnet.com.au>
Signed-off-by: Karsten Blees <blees@dcon.de>
Signed-off-by: Jeff King <peff@peff.net>
Andreas Schwab [Fri, 2 Nov 2012 12:26:47 +0000 (13:26 +0100)]
commit: fixup misplacement of --no-post-rewrite description
In
e858af6 (commit: document a couple of options) the description of the
--no-post-rewrite option was put inside the paragraph for the --amend
option. Move it down after the paragraph.
Signed-off-by: Andreas Schwab <schwab@linux-m68k.org>
Signed-off-by: Jeff King <peff@peff.net>
Matthieu Moy [Fri, 2 Nov 2012 10:39:30 +0000 (11:39 +0100)]
Document 'git commit --no-edit' explicitly
Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Jeff King <peff@peff.net>
Jeff King [Wed, 31 Oct 2012 11:29:16 +0000 (07:29 -0400)]
remote-curl: retry failed requests for auth even with gzip
Commit
b81401c taught the post_rpc function to retry the
http request after prompting for credentials. However, it
did not handle two cases:
1. If we have a large request, we do not retry. That's OK,
since we would have sent a probe (with retry) already.
2. If we are gzipping the request, we do not retry. That
was considered OK, because the intended use was for
push (e.g., listing refs is OK, but actually pushing
objects is not), and we never gzip on push.
This patch teaches post_rpc to retry even a gzipped request.
This has two advantages:
1. It is possible to configure a "half-auth" state for
fetching, where the set of refs and their sha1s are
advertised, but one cannot actually fetch objects.
This is not a recommended configuration, as it leaks
some information about what is in the repository (e.g.,
an attacker can try brute-forcing possible content in
your repository and checking whether it matches your
branch sha1). However, it can be slightly more
convenient, since a no-op fetch will not require a
password at all.
2. It future-proofs us should we decide to ever gzip more
requests.
Signed-off-by: Jeff King <peff@peff.net>
Jeff King [Wed, 31 Oct 2012 11:20:15 +0000 (07:20 -0400)]
remote-curl: hoist gzip buffer size to top of post_rpc
When we gzip the post data for a smart-http rpc request, we
compute the gzip body and its size inside the "use_gzip"
conditional. We keep track of the body after the conditional
ends, but not the size. Let's remember both, which will
enable us to retry failed gzip requests in a future patch.
Signed-off-by: Jeff King <peff@peff.net>
Joachim Schmitz [Tue, 30 Oct 2012 09:21:40 +0000 (10:21 +0100)]
fix 'make test' for HP NonStop
This fixes the vast majority of test failures on HP NonStop.
Some test don't work with /bin/diff, some fail with /bin/tar,
so let's put /usr/local/bin in PATH first.
Some tests fail with /bin/sh (link to /bin/ksh) so use bash instead
Signed-off-by: Joachim Schmitz <jojo@schmitz-digital.de>
Signed-off-by: Jeff King <peff@peff.net>
Tom Jones [Sun, 21 Oct 2012 19:46:37 +0000 (20:46 +0100)]
Add -S, --gpg-sign option to manpage of "git commit"
git commit -S, --gpg-sign was mentioned in the program's help message,
but not in the manpage.
This adds an equivalent entry for the option in the manpage.
Signed-off-by: Tom Jones <tom@oxix.org>
Signed-off-by: Jeff King <peff@peff.net>
Jeff King [Mon, 29 Oct 2012 08:15:04 +0000 (04:15 -0400)]
Merge branch 'rs/branch-del-symref'
A symbolic ref refs/heads/SYM was not correctly removed with
"git branch -d SYM"; the command removed the ref pointed by
SYM instead.
* rs/branch-del-symref:
branch: show targets of deleted symrefs, not sha1s
branch: skip commit checks when deleting symref branches
branch: delete symref branch, not its target
branch: factor out delete_branch_config()
branch: factor out check_branch_commit()
Jeff King [Mon, 29 Oct 2012 08:14:57 +0000 (04:14 -0400)]
Merge branch 'nd/status-long'
Allow an earlier "--short" option on the command line to be
countermanded with the "--long" option for "git status" and "git
commit".
* nd/status-long:
status: add --long output format option
Jeff King [Mon, 29 Oct 2012 08:13:49 +0000 (04:13 -0400)]
Merge branch 'jk/sh-setup-in-filter-branch'
Refactoring to avoid code duplication in shell scripts.
* jk/sh-setup-in-filter-branch:
filter-branch: use git-sh-setup's ident parsing functions
git-sh-setup: refactor ident-parsing functions
Jeff King [Mon, 29 Oct 2012 08:13:16 +0000 (04:13 -0400)]
Merge branch 'nd/grep-true-path'
"git grep -e pattern <tree>" asked the attribute system to read
"<tree>:.gitattributes" file in the working tree, which was
nonsense.
* nd/grep-true-path:
grep: stop looking at random places for .gitattributes
Jeff King [Mon, 29 Oct 2012 08:13:09 +0000 (04:13 -0400)]
Merge branch 'jk/maint-http-init-not-in-result-handler'
Further clean-up to the http codepath that picks up results after
cURL library is done with one request slot.
* jk/maint-http-init-not-in-result-handler:
http: do not set up curl auth after a 401
remote-curl: do not call run_slot repeatedly
Jeff King [Mon, 29 Oct 2012 08:12:15 +0000 (04:12 -0400)]
Merge branch 'jc/grep-pcre-loose-ends'
"git log -F -E --grep='<ere>'" failed to use the given <ere>
pattern as extended regular expression, and instead looked for the
string literally. The early part of this series is a fix for it;
the latter part teaches log to respect the grep.* configuration.
* jc/grep-pcre-loose-ends:
log: honor grep.* configuration
log --grep: accept --basic-regexp and --perl-regexp
log --grep: use the same helper to set -E/-F options as "git grep"
revisions: initialize revs->grep_filter using grep_init()
grep: move pattern-type bits support to top-level grep.[ch]
grep: move the configuration parsing logic to grep.[ch]
builtin/grep.c: make configuration callback more reusable
Jeff King [Mon, 29 Oct 2012 08:12:12 +0000 (04:12 -0400)]
Merge branch 'jl/submodule-add-by-name'
If you remove a submodule, in order to keep the repository so that
"git checkout" to an older commit in the superproject history can
resurrect the submodule, the real repository will stay in $GIT_DIR
of the superproject. A later "git submodule add $path" to add a
different submodule at the same path will fail. Diagnose this case
a bit better, and if the user really wants to add an unrelated
submodule at the same path, give the "--name" option to give it a
place in $GIT_DIR of the superproject that does not conflict with
the original submodule.
* jl/submodule-add-by-name:
submodule add: Fail when .git/modules/<name> already exists unless forced
Teach "git submodule add" the --name option
Jeff King [Mon, 29 Oct 2012 08:12:07 +0000 (04:12 -0400)]
Merge branch 'jl/submodule-rm'
"git rm submodule" cannot blindly remove a submodule directory as
its working tree may have local changes, and worse yet, it may even
have its repository embedded in it. Teach it some special cases
where it is safe to remove a submodule, specifically, when there is
no local changes in the submodule working tree, and its repository
is not embedded in its working tree but is elsewhere and uses the
gitfile mechanism to point at it.
* jl/submodule-rm:
submodule: teach rm to remove submodules unless they contain a git directory
Nguyễn Thái Ngọc Duy [Fri, 26 Oct 2012 15:53:55 +0000 (22:53 +0700)]
fetch-pack: move core code to libgit.a
fetch_pack() is used by transport.c, part of libgit.a while it stays
in builtin/fetch-pack.c. Move it to fetch-pack.c so that we won't get
undefined reference if a program that uses libgit.a happens to pull it
in.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Jeff King <peff@peff.net>
Phil Hord [Fri, 26 Oct 2012 19:44:43 +0000 (15:44 -0400)]
Add tests for submodule sync --recursive
Signed-off-by: Phil Hord <hordp@cisco.com>
Acked-By: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Jeff King <peff@peff.net>
Phil Hord [Fri, 26 Oct 2012 19:44:42 +0000 (15:44 -0400)]
Teach --recursive to submodule sync
The submodule sync command was somehow left out when
--recursive was added to the other submodule commands.
Teach sync to handle the --recursive switch by recursing
when we're in a submodule we are sync'ing.
Change the report during sync to show submodule-path
instead of submodule-name to be consistent with the other
submodule commands and to help recursed paths make sense.
Signed-off-by: Phil Hord <hordp@cisco.com>
Acked-By: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Jeff King <peff@peff.net>