threads / discuss / 28459

What's cooking in git.git (Sep 2011, #06; Wed, 21)

Subject: What's cooking in git.git (Sep 2011, #06; Wed, 21)

## tl;dr

19 messages between Sep 22, 2011 and Oct 5, 2011.

replies: 18people: 7as markdown or json

Junio C Hamano· Sep 22, 2011, 05:04 UTC · lore

Here are the topics that have been cooking. Commits prefixed with '-' are only in 'pu' while commits prefixed with '+' are in 'next'.

Here are the repositories that have my integration branches:
With maint, master, next, pu and todo:
	url = git://repo.or.cz/alt-git.git
	url = https://code.google.com/p/git-core/
With only maint and master:
	url = git://git.sourceforge.jp/gitroot/git-core/git.git
	url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
With all the topics and integration branches:
	url = https://github.com/gitster/git

Without kernel.org working, this feature-freeze rc cycle is not really working smoothly. I could take things slowly just like our previous maintainer declared to do for his other project, but I probably will end up releasing the 1.7.7 final by the end of this week without kernel.org.

-------------------------------------------------- [New Topics]

* bw/grep-no-index-no-exclude (2011-09-15) 2 commits
 - grep --no-index: don't use git standard exclusions
 - grep: do not use --index in the short usage output
* jc/namespace-doc-with-old-asciidoc (2011-09-16) 1 commit
 - Documentation/gitnamespaces.txt: cater to older asciidoc
* jc/want-commit (2011-09-15) 1 commit
 - Allow git merge ":/<pattern>"
* jc/ls-remote-short-help (2011-09-16) 1 commit
 - ls-remote: a lone "-h" is asking for help
* jc/maint-bundle-too-quiet (2011-09-19) 1 commit
 - Teach progress eye-candy to fetch_refs_from_bundle()
* jk/filter-branch-require-clean-work-tree (2011-09-15) 1 commit
 - filter-branch: use require_clean_work_tree
* jn/gitweb-highlite-sanitise (2011-09-16) 1 commit
 - gitweb: Strip non-printable characters from syntax highlighter output
* mh/check-ref-format-3 (2011-09-16) 22 commits
 - add_ref(): verify that the refname is formatted correctly
 - resolve_ref(): expand documentation
 - resolve_ref(): also treat a too-long SHA1 as invalid
 - resolve_ref(): emit warnings for improperly-formatted references
 - resolve_ref(): verify that the input refname has the right format
 - remote: avoid passing NULL to read_ref()
 - remote: use xstrdup() instead of strdup()
 - resolve_ref(): do not follow incorrectly-formatted symbolic refs
 - resolve_ref(): extract a function get_packed_ref()
 - resolve_ref(): turn buffer into a proper string as soon as possible
 - resolve_ref(): only follow a symlink that contains a valid, normalized refname
 - resolve_ref(): use prefixcmp()
 - resolve_ref(): explicitly fail if a symlink is not readable
 - Change check_refname_format() to reject unnormalized refnames
 - Inline function refname_format_print()
 - Make collapse_slashes() allocate memory for its result
 - Do not allow ".lock" at the end of any refname component
 - Refactor check_refname_format()
 - Change check_ref_format() to take a flags argument
 - Change bad_ref_char() to return a boolean value
 - git check-ref-format: add options --allow-onelevel and --refspec-pattern
 - t1402: add some more tests
* cn/eradicate-working-copy (2011-09-21) 2 commits
 - patch-id.c: use strbuf instead of a fixed buffer
 - Remove 'working copy' from the documentation and C code
* js/bisect-no-checkout (2011-09-21) 1 commit
  (merged to 'next' on 2011-09-21 at e94ad3e)
 + bisect: fix exiting when checkout failed in bisect_start()
* mg/maint-doc-sparse-checkout (2011-09-21) 3 commits
  (merged to 'next' on 2011-09-21 at f316dec)
 + git-read-tree.txt: correct sparse-checkout and skip-worktree description
 + git-read-tree.txt: language and typography fixes
 + unpack-trees: print "Aborting" to stderr
* ms/patch-id-with-overlong-line (2011-09-21) 1 commit
 - patch-id.c: use strbuf instead of a fixed buffer
* sn/doc-update-index-assume-unchanged (2011-09-21) 1 commit
  (merged to 'next' on 2011-09-21 at 325e796)
 + Documentation/git-update-index: refer to 'ls-files'
* jc/request-pull-show-head-4 (2011-09-21) 7 commits
 - request-pull: use the branch description
 - request-pull: state what commit to expect
 - request-pull: modernize style
 - branch: teach --edit-description option
 - format-patch: use branch description in cover letter
 - branch: add read_branch_desc() helper function
 - Merge branch 'bk/ancestry-path' into jc/branch-desc
 (this branch uses bk/ancestry-path.)

-------------------------------------------------- [Graduated to "master"]

* ph/format-patch-no-color (2011-09-12) 1 commit
  (merged to 'next' on 2011-09-12 at 20283e8)
 + format-patch: ignore ui.color
A fix for the recent regression.

-------------------------------------------------- [Stalled]

* jc/signed-push (2011-09-12) 7 commits
 - push -s: support pre-receive-signature hook
 - push -s: receiving end
 - push -s: send signed push certificate
 - push -s: skeleton
 - Split GPG interface into its own helper library
 - rename "match_refs()" to "match_push_refs()"
 - send-pack: typofix error message
 (this branch uses jc/run-receive-hook-cleanup; is tangled with jc/signed-push-3.)
This was the v2 that updated notes tree on the receiving end.
* jc/signed-push-3 (2011-09-12) 4 commits
 . push -s: signed push
 - Split GPG interface into its own helper library
 - rename "match_refs()" to "match_push_refs()"
 - send-pack: typofix error message
 (this branch uses jc/run-receive-hook-cleanup; is tangled with jc/signed-push.)

This is the third edition, that moves the preparation of the notes tree to the sending end.

* jk/add-i-hunk-filter (2011-07-27) 5 commits
  (merged to 'next' on 2011-08-11 at 8ff9a56)
 + add--interactive: add option to autosplit hunks
 + add--interactive: allow negatation of hunk filters
 + add--interactive: allow hunk filtering on command line
 + add--interactive: factor out regex error handling
 + add--interactive: refactor patch mode argument processing
Will be dropped.
* jh/receive-count-limit (2011-05-23) 10 commits
 - receive-pack: Allow server to refuse pushes with too many objects
 - pack-objects: Estimate pack size; abort early if pack size limit is exceeded
 - send-pack/receive-pack: Allow server to refuse pushing too large packs
 - pack-objects: Allow --max-pack-size to be used together with --stdout
 - send-pack/receive-pack: Allow server to refuse pushes with too many commits
 - pack-objects: Teach new option --max-commit-count, limiting #commits in pack
 - receive-pack: Prepare for addition of the new 'limit-*' family of capabilities
 - Tighten rules for matching server capabilities in server_supports()
 - send-pack: Attempt to retrieve remote status even if pack-objects fails
 - Update technical docs to reflect side-band-64k capability in receive-pack
Would need another round to separate per-pack and per-session limits.
* jk/generation-numbers (2011-09-11) 8 commits
 - metadata-cache.c: make two functions static
 - limit "contains" traversals based on commit generation
 - check commit generation cache validity against grafts
 - pretty: support %G to show the generation number of a commit
 - commit: add commit_generation function
 - add metadata-cache infrastructure
 - decorate: allow storing values instead of pointers
 - Merge branch 'jk/tag-contains-ab' (early part) into HEAD

The initial "tag --contains" de-pessimization without need for generation numbers is already in; backburnered.

* sr/transport-helper-fix-rfc (2011-07-19) 2 commits
 - t5800: point out that deleting branches does not work
 - t5800: document inability to push new branch with old content

Perhaps 281eee4 (revision: keep track of the end-user input from the command line, 2011-08-25) in bk/ancestry-path would help.

* po/cygwin-backslash (2011-08-05) 2 commits
 - On Cygwin support both UNIX and DOS style path-names
 - git-compat-util: add generic find_last_dir_sep that respects is_dir_sep

Incomplete with respect to backslash processing in prefix_filename(), and also loses the ability to escape glob specials. Perhaps drop?

-------------------------------------------------- [Cooking]

* jm/mergetool-pathspec (2011-09-16) 2 commits
 - mergetool: no longer need to save standard input
 - mergetool: Use args as pathspec to unmerged files
* nd/maint-autofix-tag-in-head (2011-09-18) 4 commits
 - Accept tags in HEAD or MERGE_HEAD
 - merge: remove global variable head[]
 - merge: use return value of resolve_ref() to determine if HEAD is invalid
 - merge: keep stash[] a local variable
* jk/maint-fetch-submodule-check-fix (2011-09-12) 1 commit
  (merged to 'next' on 2011-09-12 at 3c73b8c)
 + fetch: avoid quadratic loop checking for updated submodules
 (this branch is used by jk/argv-array.)

This probably can wait, as long as the other half of the regression fix is in the upcoming release.

* bc/attr-ignore-case (2011-09-14) 5 commits
 - attr: read core.attributesfile from git_default_core_config
 - attr.c: respect core.ignorecase when matching attribute patterns
 - builtin/mv.c: plug miniscule memory leak
 - cleanup: use internal memory allocation wrapper functions everywhere
 - attr.c: avoid inappropriate access to strbuf "buf" member
* jc/maint-fsck-fwrite-size-check (2011-09-11) 1 commit
  (merged to 'next' on 2011-09-16 at 2258f11)
 + fsck: do not abort upon finding an empty blob
* jk/argv-array (2011-09-14) 7 commits
  (merged to 'next' on 2011-09-16 at 90feab4)
 + run_hook: use argv_array API
 + checkout: use argv_array API
 + bisect: use argv_array API
 + quote: provide sq_dequote_to_argv_array
 + refactor argv_array into generic code
 + quote.h: fix bogus comment
 + add sha1_array API docs
 (this branch uses jk/maint-fetch-submodule-check-fix.)
* js/cred-macos-x-keychain-2 (2011-09-14) 1 commit
 - contrib: add a pair of credential helpers for Mac OS X's keychain
 (this branch is tangled with jk/http-auth-keyring.)
Welcome addition to build our confidence in the jk/http-auth-keyring topic.
* rj/maint-t9159-svn-rev-notation (2011-09-21) 1 commit
 - t9159-*.sh: skip for mergeinfo test for svn <= 1.4
* tr/doc-note-rewrite (2011-09-13) 1 commit
  (merged to 'next' on 2011-09-16 at 5fe813a)
 + Documentation: basic configuration of notes.rewriteRef
Updated to a safer wording.
* jk/default-attr (2011-09-12) 1 commit
 - attr: map builtin userdiff drivers to well-known extensions
Will be re-rolled after 1.7.7 final.
* hl/iso8601-more-zone-formats (2011-09-12) 1 commit
  (merged to 'next' on 2011-09-12 at 270f5c7)
 + date.c: Support iso8601 timezone formats
* jc/run-receive-hook-cleanup (2011-09-12) 1 commit
  (merged to 'next' on 2011-09-12 at 68dd431)
 + refactor run_receive_hook()
 (this branch is used by jc/signed-push and jc/signed-push-3.)
Just to make it easier to run a hook that reads from its standard input.
* jk/for-each-ref (2011-09-08) 5 commits
  (merged to 'next' on 2011-09-14 at 36ed515)
 + for-each-ref: add split message parts to %(contents:*).
 + for-each-ref: handle multiline subjects like --pretty
 + for-each-ref: refactor subject and body placeholder parsing
 + t6300: add more body-parsing tests
 + t7004: factor out gpg setup
* wh/normalize-alt-odb-path (2011-09-07) 1 commit
  (merged to 'next' on 2011-09-14 at 96f722b)
 + sha1_file: normalize alt_odb path before comparing and storing
* fk/use-kwset-pickaxe-grep-f (2011-09-11) 2 commits
  (merged to 'next' on 2011-09-14 at 436d858)
 + obstack.c: Fix some sparse warnings
 + sparse: Fix an "Using plain integer as NULL pointer" warning

In general we would prefer to see these fixed at the upstream first, but we have essentially forked from them at their last GPLv2 versions...

* jc/make-static (2011-09-14) 4 commits
  (merged to 'next' on 2011-09-14 at c5943ff)
 + exec_cmd.c: prepare_git_cmd() is sometimes used
 + environment.c: have_git_dir() has users on Cygwin
  (merged to 'next' on 2011-09-11 at 2acb0af)
 + vcs-svn: remove unused functions and make some static
 + make-static: master
 (this branch is tangled with jc/reflog-walk-use-only-nsha1.)
With a few fix-ups; probably needs to be ejected after 1.7.7 happens.
* rj/quietly-create-dep-dir (2011-09-11) 1 commit
  (merged to 'next' on 2011-09-12 at 93d1c6b)
 + Makefile: Make dependency directory creation less noisy
* mz/remote-rename (2011-09-11) 4 commits
 - remote: only update remote-tracking branch if updating refspec
 - remote rename: warn when refspec was not updated
 - remote: "rename o foo" should not rename ref "origin/bar"
 - remote: write correct fetch spec when renaming remote 'remote'
* cb/common-prefix-unification (2011-09-12) 3 commits
  (merged to 'next' on 2011-09-14 at 24f571f)
 + rename pathspec_prefix() to common_prefix() and move to dir.[ch]
 + consolidate pathspec_prefix and common_prefix
 + remove prefix argument from pathspec_prefix
* cb/send-email-help (2011-09-12) 1 commit
  (merged to 'next' on 2011-09-14 at ae71999)
 + send-email: add option -h

A separate set of patches to remove the hidden fully-spelled "help" from other commands would be nice to have as companion patches as well.

* jc/fetch-pack-fsck-objects (2011-09-04) 3 commits
  (merged to 'next' on 2011-09-12 at a031347)
 + test: fetch/receive with fsckobjects
 + transfer.fsckobjects: unify fetch/receive.fsckobjects
 + fetch.fsckobjects: verify downloaded objects

We had an option to verify the sent objects before accepting a push but lacked the corresponding option when fetching. In the light of the recent k.org incident, a change like this would be a good addition.

* jc/fetch-verify (2011-09-01) 3 commits
  (merged to 'next' on 2011-09-12 at 3f491ab)
 + fetch: verify we have everything we need before updating our ref
 + rev-list --verify-object
 + list-objects: pass callback data to show_objects()
 (this branch uses jc/traverse-commit-list; is tangled with jc/receive-verify.)

During a fetch, we verify that the pack stream is self consistent, but did not verify that the refs that are updated are consistent with objects contained in the packstream, and this adds such a check.

* jc/receive-verify (2011-09-09) 6 commits
  (merged to 'next' on 2011-09-12 at 856de78)
 + receive-pack: check connectivity before concluding "git push"
 + check_everything_connected(): libify
 + check_everything_connected(): refactor to use an iterator
 + fetch: verify we have everything we need before updating our ref
 + rev-list --verify-object
 + list-objects: pass callback data to show_objects()
 (this branch uses jc/traverse-commit-list; is tangled with jc/fetch-verify.)

While accepting a push, we verify that the pack stream is self consistent, but did not verify that the refs the push updates are consistent with objects contained in the packstream, and this adds such a check.

* jn/maint-http-error-message (2011-09-06) 2 commits
  (merged to 'next' on 2011-09-12 at a843f03)
 + http: avoid empty error messages for some curl errors
 + http: remove extra newline in error message
* bk/ancestry-path (2011-09-15) 4 commits
  (merged to 'next' on 2011-09-15 at aa64d04)
 + t6019: avoid refname collision on case-insensitive systems
  (merged to 'next' on 2011-09-02 at d05ba5d)
 + revision: do not include sibling history in --ancestry-path output
 + revision: keep track of the end-user input from the command line
 + rev-list: Demonstrate breakage with --ancestry-path --all
 (this branch is used by jc/request-pull-show-head-4.)
* mg/branch-list (2011-09-13) 7 commits
  (merged to 'next' on 2011-09-14 at 6610a2e)
 + t3200: clean up checks for file existence
  (merged to 'next' on 2011-09-11 at 20a9cdb)
 + branch: -v does not automatically imply --list
  (merged to 'next' on 2011-09-02 at b818eae)
 + branch: allow pattern arguments
 + branch: introduce --list option
 + git-branch: introduce missing long forms for the options
 + git-tag: introduce long forms for the options
 + t6040: test branch -vv
* mm/rebase-i-exec-edit (2011-08-26) 2 commits
  (merged to 'next' on 2011-09-02 at e75b1b9)
 + rebase -i: notice and warn if "exec $cmd" modifies the index or the working tree
 + rebase -i: clean error message for --continue after failed exec
* hv/submodule-merge-search (2011-08-26) 5 commits
 - submodule: Search for merges only at end of recursive merge
 - allow multiple calls to submodule merge search for the same path
 - submodule: Demonstrate known breakage during recursive merge
 - push: Don't push a repository with unpushed submodules
  (merged to 'next' on 2011-08-24 at 398e764)
 + push: teach --recurse-submodules the on-demand option
 (this branch is tangled with fg/submodule-auto-push.)

The second from the bottom one needs to be replaced with a properly written commit log message.

* mm/mediawiki-as-a-remote (2011-09-01) 2 commits
  (merged to 'next' on 2011-09-12 at 163c6a5)
 + git-remote-mediawiki: allow push to set MediaWiki metadata
 + Add a remote helper to interact with mediawiki (fetch & push)
Fun.
* bc/unstash-clean-crufts (2011-08-27) 4 commits
  (merged to 'next' on 2011-09-02 at 7bfd66f)
 + git-stash: remove untracked/ignored directories when stashed
 + t/t3905: add missing '&&' linkage
 + git-stash.sh: fix typo in error message
 + t/t3905: use the name 'actual' for test output, swap arguments to test_cmp
* da/make-auto-header-dependencies (2011-08-30) 1 commit
  (merged to 'next' on 2011-09-02 at e04a4af)
 + Makefile: Improve compiler header dependency check
 (this branch uses fk/make-auto-header-dependencies.)
* gb/am-hg-patch (2011-08-29) 1 commit
  (merged to 'next' on 2011-09-02 at 3edfe4c)
 + am: preliminary support for hg patches
* jc/diff-index-unpack (2011-08-29) 3 commits
  (merged to 'next' on 2011-09-02 at 4206bd9)
 + diff-index: pass pathspec down to unpack-trees machinery
 + unpack-trees: allow pruning with pathspec
 + traverse_trees(): allow pruning with pathspec
* nm/grep-object-sha1-lock (2011-08-30) 1 commit
  (merged to 'next' on 2011-09-02 at 336f57d)
 + grep: Fix race condition in delta_base_cache
* tr/mergetool-valgrind (2011-08-30) 1 commit
  (merged to 'next' on 2011-09-02 at f5f2c61)
 + Symlink mergetools scriptlets into valgrind wrappers
* fg/submodule-auto-push (2011-09-11) 2 commits
  (merged to 'next' on 2011-09-11 at 3fc86f7)
 + submodule.c: make two functions static
  (merged to 'next' on 2011-08-24 at 398e764)
 + push: teach --recurse-submodules the on-demand option
 (this branch is tangled with hv/submodule-merge-search.)

What the topic aims to achieve may make sense, but the implementation looked somewhat suboptimal.

* jc/traverse-commit-list (2011-08-22) 3 commits
  (merged to 'next' on 2011-08-24 at df50dd7)
 + revision.c: update show_object_with_name() without using malloc()
 + revision.c: add show_object_with_name() helper function
 + rev-list: fix finish_object() call
 (this branch is used by jc/fetch-verify and jc/receive-verify.)
* fk/make-auto-header-dependencies (2011-08-18) 1 commit
  (merged to 'next' on 2011-08-24 at 3da2c25)
 + Makefile: Use computed header dependencies if the compiler supports it
 (this branch is used by da/make-auto-header-dependencies.)
* mh/iterate-refs (2011-09-11) 7 commits
 - refs.c: make create_cached_refs() static
 - Retain caches of submodule refs
 - Store the submodule name in struct cached_refs
 - Allocate cached_refs objects dynamically
 - Change the signature of read_packed_refs()
 - Access reference caches only through new function get_cached_refs()
 - Extract a function clear_cached_refs()

I did not see anything fundamentally wrong with this series, but it was unclear what the benefit of these changes are. If the series were to read parts of the ref hierarchy (like refs/heads/) lazily, the story would have been different, though.

* hv/submodule-update-none (2011-08-11) 2 commits
  (merged to 'next' on 2011-08-24 at 5302fc1)
 + add update 'none' flag to disable update of submodule by default
 + submodule: move update configuration variable further up
* jc/lookup-object-hash (2011-08-11) 6 commits
  (merged to 'next' on 2011-08-24 at 5825411)
 + object hash: replace linear probing with 4-way cuckoo hashing
 + object hash: we know the table size is a power of two
 + object hash: next_size() helper for readability
 + pack-objects --count-only
 + object.c: remove duplicated code for object hashing
 + object.c: code movement for readability

I do not think there is anything fundamentally wrong with this series, but the risk of breakage far outweighs observed performance gain in one particular workload. Will keep it in 'next' at least for one cycle.

* fg/submodule-git-file-git-dir (2011-08-22) 2 commits
  (merged to 'next' on 2011-08-23 at 762194e)
 + Move git-dir for submodules
 + rev-parse: add option --resolve-git-dir <path>

I do not think there is anything fundamentally wrong with this series, but the risk of breakage outweighs any benefit for having this new feature. Will keep it in 'next' at least for one cycle.

* jk/http-auth-keyring (2011-09-16) 21 commits
  (merged to 'next' on 2011-09-16 at b4195eb)
 + check_expirations: don't copy over same element
 + t0300: add missing EOF terminator for <<
  (merged to 'next' on 2011-09-14 at 589c7c9)
 + credential-store: use a better storage format
 + t0300: make alternate username tests more robust
 + t0300: make askpass tests a little more robust
 + credential-cache: fix expiration calculation corner cases
 + docs: minor tweaks to credentials API
  (merged to 'next' on 2011-09-11 at 491ce6a)
 + credentials: make credential_fill_gently() static
  (merged to 'next' on 2011-08-03 at b06e80e)
 + credentials: add "getpass" helper
 + credentials: add "store" helper
 + credentials: add "cache" helper
 + docs: end-user documentation for the credential subsystem
 + http: use hostname in credential description
 + allow the user to configure credential helpers
 + look for credentials in config before prompting
 + http: use credential API to get passwords
 + introduce credentials API
 + http: retry authentication failures for all http requests
 + remote-curl: don't retry auth failures with dumb protocol
 + improve httpd auth tests
 + url: decode buffers that are not NUL-terminated
 (this branch is tangled with js/cred-macos-x-keychain and js/cred-macos-x-keychain-2.)
* rr/revert-cherry-pick-continue (2011-09-11) 19 commits
  (merged to 'next' on 2011-09-11 at 7d78054)
 + builtin/revert.c: make commit_list_append() static
  (merged to 'next' on 2011-08-24 at 712c115)
 + revert: Propagate errors upwards from do_pick_commit
 + revert: Introduce --continue to continue the operation
 + revert: Don't implicitly stomp pending sequencer operation
 + revert: Remove sequencer state when no commits are pending
 + reset: Make reset remove the sequencer state
 + revert: Introduce --reset to remove sequencer state
 + revert: Make pick_commits functionally act on a commit list
 + revert: Save command-line options for continuing operation
 + revert: Save data for continuing after conflict resolution
 + revert: Don't create invalid replay_opts in parse_args
 + revert: Separate cmdline parsing from functional code
 + revert: Introduce struct to keep command-line options
 + revert: Eliminate global "commit" variable
 + revert: Rename no_replay to record_origin
 + revert: Don't check lone argument in get_encoding
 + revert: Simplify and inline add_message_to_msg
 + config: Introduce functions to write non-standard file
 + advice: Introduce error_resolve_conflict

-------------------------------------------------- [Discarded]

* mh/check-ref-format (2011-09-11) 8 commits
 . Add tools to avoid the use of unnormalized refnames.
 . Do not allow ".lock" at the end of any refname component
 . Add a library function normalize_refname()
 . Change check_ref_format() to take a flags argument
 . fixup asciidoc formatting
 . git check-ref-format: add options --allow-onelevel and --refspec-pattern
 . Change bad_ref_char() to return a boolean value
 . t1402: add some more tests
Rerolled
* jk/pager-with-alias (2011-08-19) 1 commit
 . support pager.* for aliases
* cb/maint-quiet-push (2011-09-05) 4 commits
 . t5541: avoid TAP test miscounting
 . push: old receive-pack does not understand --quiet
 . fix push --quiet via http
 . tests for push --quiet
Dropped for rerolling after 1.7.7 cycle.
* js/cred-macos-x-keychain (2011-09-11) 15 commits
  (merged to 'next' on 2011-09-12 at 8d17f94)
 + contrib: add a credential helper for Mac OS X's keychain
  (merged to 'next' on 2011-09-11 at 491ce6a)
 + credentials: make credential_fill_gently() static
  (merged to 'next' on 2011-08-03 at b06e80e)
 + credentials: add "getpass" helper
 + credentials: add "store" helper
 + credentials: add "cache" helper
 + docs: end-user documentation for the credential subsystem
 + http: use hostname in credential description
 + allow the user to configure credential helpers
 + look for credentials in config before prompting
 + http: use credential API to get passwords
 + introduce credentials API
 + http: retry authentication failures for all http requests
 + remote-curl: don't retry auth failures with dumb protocol
 + improve httpd auth tests
 + url: decode buffers that are not NUL-terminated
 (this branch is tangled with jk/http-auth-keyring and js/cred-macos-x-keychain-2.)
Reverted out of 'next'.
* jc/reflog-walk-use-only-nsha1 (2011-09-13) 4 commits
 . (baloon) teach reflog-walk to look at only new-sha1 field
 + environment.c: have_git_dir() has users on Cygwin
  (merged to 'next' on 2011-09-11 at 2acb0af)
 + vcs-svn: remove unused functions and make some static
 + make-static: master
 (this branch is tangled with jc/make-static.)
* hw/maint-abspath-cwd-limit (2011-09-21) 3 commits
  (merged to 'next' on 2011-09-21 at 210cf9a)
 + Revert 622fea4 (abspath.c: increase array size of cwd variable)
  (merged to 'next' on 2011-09-19 at 7d5e921)
 + abspath.c: increase array size of cwd variable to PATH_MAX
 + path.c: increase array size of cwd variable to PATH_MAX
Reverted out of 'next'.
* jc/request-pull-show-head (2011-09-13) 2 commits
  (merged to 'next' on 2011-09-13 at c82fb3a)
 + Revert "State what commit to expect in request-pull"
  (merged to 'next' on 2011-09-12 at c1c7b73)
 + State what commit to expect in request-pull
Reverted out of 'next'.
Carlos Martín Nieto· Sep 22, 2011, 08:37 UTC · re: Junio C Hamano · lore

Re: What's cooking in git.git (Sep 2011, #06; Wed, 21)

On Wed, 2011-09-21 at 22:04 -0700, Junio C Hamano wrote:
> * cn/eradicate-working-copy (2011-09-21) 2 commits
>  - patch-id.c: use strbuf instead of a fixed buffer
>  - Remove 'working copy' from the documentation and C code

It looks like that first commit sneaked in there. Shouldn't that be its own topic?

   cmn
Michael Schubert· Sep 22, 2011, 09:14 UTC · re: Carlos Martín Nieto · lore

Re: What's cooking in git.git (Sep 2011, #06; Wed, 21)

On 09/22/2011 10:37 AM, Carlos Martín Nieto wrote:
Show 7 quoted lines
> On Wed, 2011-09-21 at 22:04 -0700, Junio C Hamano wrote:
>> * cn/eradicate-working-copy (2011-09-21) 2 commits
>>  - patch-id.c: use strbuf instead of a fixed buffer
>>  - Remove 'working copy' from the documentation and C code
> 
> It looks like that first commit sneaked in there. Shouldn't that be its
> own topic?
It's in pu twice:
On 09/22/2011 07:04 AM, Junio C Hamano wrote: 
> * cn/eradicate-working-copy (2011-09-21) 2 commits
>  - patch-id.c: use strbuf instead of a fixed buffer
>  - Remove 'working copy' from the documentation and C code
> * ms/patch-id-with-overlong-line (2011-09-21) 1 commit
>  - patch-id.c: use strbuf instead of a fixed buffer
64128da and a6c5c60

There's also a minor typo in the last sentence of the commit message. Should I resend?

Junio C Hamano· Sep 22, 2011, 16:39 UTC · re: Michael Schubert · lore

Re: What's cooking in git.git (Sep 2011, #06; Wed, 21)

Michael Schubert <mschub@elegosoft.com> writes:
Show 10 quoted lines
> On 09/22/2011 10:37 AM, Carlos Martín Nieto wrote:
>> On Wed, 2011-09-21 at 22:04 -0700, Junio C Hamano wrote:
>>> * cn/eradicate-working-copy (2011-09-21) 2 commits
>>>  - patch-id.c: use strbuf instead of a fixed buffer
>>>  - Remove 'working copy' from the documentation and C code
>> 
>> It looks like that first commit sneaked in there. Shouldn't that be its
>> own topic?
>
> It's in pu twice:
Thansk for noticing. Will remove.
Show 12 quoted lines
> On 09/22/2011 07:04 AM, Junio C Hamano wrote: 
>> * cn/eradicate-working-copy (2011-09-21) 2 commits
>>  - patch-id.c: use strbuf instead of a fixed buffer
>>  - Remove 'working copy' from the documentation and C code
>
>> * ms/patch-id-with-overlong-line (2011-09-21) 1 commit
>>  - patch-id.c: use strbuf instead of a fixed buffer
>
> 64128da and a6c5c60
>
> There's also a minor typo in the last sentence of the commit message.
> Should I resend?

If that is s/user/use/ and nothing else, I can amend locally; otherwise please do.

The last part of the "rather dumb heiristic" you talk about is designed to parse "cmd | diff-tree -p --stdin" output. I agree with you that it can safely tightened a bit by checking that 41st byte is the EOL, but it probably is not worth it.

Jakub Narebski· Sep 22, 2011, 23:01 UTC · re: Junio C Hamano · lore

Re: What's cooking in git.git (Sep 2011, #06; Wed, 21)

Junio C Hamano <gitster@pobox.com> writes:
> --------------------------------------------------
> [New Topics]
> * jc/namespace-doc-with-old-asciidoc (2011-09-16) 1 commit
>  - Documentation/gitnamespaces.txt: cater to older asciidoc

I'll need this to e.g. test the "rpm" target after adding Documentation/gitweb.txt and Documentation/gitweb.conf.txt

But it is not something very urgent; the series are cooking now:
  "[PATCH/RFCv4 0/4] Moving gitweb documentation to manpages"
  http://thread.gmane.org/gmane.comp.version-control.git/181605
  
-- 
Jakub Narębski
Junio C Hamano· Sep 22, 2011, 23:12 UTC · re: Jakub Narebski · lore

Re: What's cooking in git.git (Sep 2011, #06; Wed, 21)

Jakub Narebski <jnareb@gmail.com> writes:
Show 12 quoted lines
> Junio C Hamano <gitster@pobox.com> writes:
>
>> --------------------------------------------------
>> [New Topics]
>  
>> * jc/namespace-doc-with-old-asciidoc (2011-09-16) 1 commit
>>  - Documentation/gitnamespaces.txt: cater to older asciidoc
>
> I'll need this to e.g. test the "rpm" target after adding
> Documentation/gitweb.txt and Documentation/gitweb.conf.txt
>
> But it is not something very urgent...

Now I am confused. If you apply your patch on top of "master" then you cannot create "rpm" on your platform, not because your patch is busted, but because "master" lacks the documentation fix from that topic. Is that what you mean?

If the reason the documentation fix for "master" is needed is because a new feature scheduled for the upcoming release has broken documentation, then wouldn't we need the fix before the release, whether you are working on your patch or not? How can it be not urgent if that is the case?

On my boxes with recent Debian, Ubuntu, and F14, I am not suffering from the lack of the workaround, but if distros need the workaround, then the time to apply it is now, not post release.

Hmmm....
Jakub Narebski· Sep 22, 2011, 23:33 UTC · re: Junio C Hamano · lore

Re: What's cooking in git.git (Sep 2011, #06; Wed, 21)

Junio C Hamano wrote:
Show 18 quoted lines
> Jakub Narebski <jnareb@gmail.com> writes: 
>> Junio C Hamano <gitster@pobox.com> writes:
>>
>>> --------------------------------------------------
>>> [New Topics]
>>  
>>> * jc/namespace-doc-with-old-asciidoc (2011-09-16) 1 commit
>>>  - Documentation/gitnamespaces.txt: cater to older asciidoc
>>
>> I'll need this to e.g. test the "rpm" target after adding
>> Documentation/gitweb.txt and Documentation/gitweb.conf.txt
>>
>> But it is not something very urgent...
> 
> Now I am confused. If you apply your patch on top of "master" then you
> cannot create "rpm" on your platform, not because your patch is busted,
> but because "master" lacks the documentation fix from that topic. Is that
> what you mean?
Yes, that is what I mean... but that it is only because I use old
version of asciidoc (7.1.2).
 
"make doc" (which is part of "make rpm") fails on my box with
      ASCIIDOC gitnamespaces.html
  ERROR: gitnamespaces.txt: line 9: second section must be named SYNOPSIS
  make[1]: *** [gitnamespaces.html] Error 1
Show 8 quoted lines
> If the reason the documentation fix for "master" is needed is because a
> new feature scheduled for the upcoming release has broken documentation,
> then wouldn't we need the fix before the release, whether you are working
> on your patch or not? How can it be not urgent if that is the case?
> 
> On my boxes with recent Debian, Ubuntu, and F14, I am not suffering from
> the lack of the workaround, but if distros need the workaround, then the
> time to apply it is now, not post release.

I don't think _modern_ distributions need this workaround... asciidoc 8.4.5 which fixed the issue with "Synopsis" section was released 2009-05-24:

http://www.methods.co.nz/asciidoc/CHANGELOG.html
  Version 8.4.5 (2009-05-24)
  --------------------------
  Additions and changes
  ~~~~~~~~~~~~~~~~~~~~~
    * Added manpage "Name" and "Synopsis" section title customization to
      languages configuration files.
    * "Synopsis" manpage section no longer mandatory.
  [...]
-- 
Jakub Narebski
Poland
Junio C Hamano· Sep 22, 2011, 23:45 UTC · re: Jakub Narebski · lore

Re: What's cooking in git.git (Sep 2011, #06; Wed, 21)

Jakub Narebski <jnareb@gmail.com> writes:
> I don't think _modern_ distributions need this workaround... asciidoc 8.4.5
> which fixed the issue with "Synopsis" section was released 2009-05-24:

Thanks for a clarification. I'll then hold it off until the upcoming release and then merge it to see if anybody screams.

Clemens Buchacher· Sep 23, 2011, 11:00 UTC · re: Junio C Hamano · lore

[PATCH] fix push --quiet: add 'quiet' capability to receive-pack

Currently, git push --quiet produces some non-error output, e.g.:
 $ git push --quiet
 Unpacking objects: 100% (3/3), done.
This fixes a bug reported for the fedora git package:
 https://bugzilla.redhat.com/show_bug.cgi?id=725593

Commit 90a6c7d4 (propagate --quiet to send-pack/receive-pack) introduced the --quiet option to receive-pack and made send-pack pass that option. Older versions of receive-pack do not recognize the option, however, and terminate immediately. The commit was therefore reverted.

This change instead adds a 'quiet' capability to receive-pack, which is a backwards compatible.

In addition, this fixes push --quiet via http: A verbosity of 0 means quiet for remote helpers.

Reported-by: Jesse Keating <jkeating@redhat.com>
Reported-by: Tobias Ulmer <tobiasu@tmux.org>
Cc: Todd Zullinger <tmz@pobox.com>
Signed-off-by: Clemens Buchacher <drizzd@aon.at>
---
On Wed, Sep 21, 2011 at 10:04:28PM -0700, Junio C Hamano wrote:
Show 8 quoted lines
> 
> * cb/maint-quiet-push (2011-09-05) 4 commits
>  . t5541: avoid TAP test miscounting
>  . push: old receive-pack does not understand --quiet
>  . fix push --quiet via http
>  . tests for push --quiet
> 
> Dropped for rerolling after 1.7.7 cycle.

This is the re-rolled version based on current master, without the backwards incompatible receive-pack --quiet option.

I squashed the tests in and added your unpack(void) fixup.

I have not added Michael's "t5541: avoid TAP test miscounting" since I cannot reproduce the error:

 http://mid.gmane.org/e4e82f1267da3edfc600361de0041f618c31e30c.1315232475.git.git@drmicha.warpmail.net

And there is also this related patch "server_supports(): parse feature list more carefully", which looked good to me:

 http://mid.gmane.org/7vmxejy9od.fsf@alter.siamese.dyndns.org
Does it need more work?
Clemens
 builtin/receive-pack.c   |   14 ++++++++++++--
 builtin/send-pack.c      |   13 ++++++++++---
 remote-curl.c            |    4 +++-
 t/t5523-push-upstream.sh |    7 +++++++
 t/t5541-http-push.sh     |    8 ++++++++
 5 files changed, 40 insertions(+), 6 deletions(-)
diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c
index ae164da..4419323 100644
--- a/builtin/receive-pack.c
+++ b/builtin/receive-pack.c
@@ -31,6 +31,7 @@ static int transfer_unpack_limit = -1;
 static int unpack_limit = 100;
 static int report_status;
 static int use_sideband;
+static int quiet;
 static int prefer_ofs_delta = 1;
 static int auto_update_server_info;
 static int auto_gc = 1;
@@ -114,7 +115,7 @@ static int show_ref(const char *path, const unsigned char *sha1, int flag, void
 	else
 		packet_write(1, "%s %s%c%s%s\n",
 			     sha1_to_hex(sha1), path, 0,
-			     " report-status delete-refs side-band-64k",
+			     " report-status delete-refs side-band-64k quiet",
 			     prefer_ofs_delta ? " ofs-delta" : "");
 	sent_capabilities = 1;
 	return 0;
@@ -636,6 +637,8 @@ static struct command *read_head_info(void)
 				report_status = 1;
 			if (strstr(refname + reflen + 1, "side-band-64k"))
 				use_sideband = LARGE_PACKET_MAX;
+			if (strstr(refname + reflen + 1, "quiet"))
+				quiet = 1;
 		}
 		cmd = xcalloc(1, sizeof(struct command) + len - 80);
 		hashcpy(cmd->old_sha1, old_sha1);
@@ -684,8 +687,10 @@ static const char *unpack(void)
 
 	if (ntohl(hdr.hdr_entries) < unpack_limit) {
 		int code, i = 0;
-		const char *unpacker[4];
+		const char *unpacker[5];
 		unpacker[i++] = "unpack-objects";
+		if (quiet)
+			unpacker[i++] = "-q";
 		if (receive_fsck_objects)
 			unpacker[i++] = "--strict";
 		unpacker[i++] = hdr_arg;
@@ -799,6 +804,11 @@ int cmd_receive_pack(int argc, const char **argv, const char *prefix)
 		const char *arg = *argv++;
 
 		if (*arg == '-') {
+			if (!strcmp(arg, "--quiet")) {
+				quiet = 1;
+				continue;
+			}
+
 			if (!strcmp(arg, "--advertise-refs")) {
 				advertise_refs = 1;
 				continue;
diff --git a/builtin/send-pack.c b/builtin/send-pack.c
index c1f6ddd..a8d6b4c 100644
--- a/builtin/send-pack.c
+++ b/builtin/send-pack.c
@@ -263,6 +263,8 @@ int send_pack(struct send_pack_args *args,
 		args->use_ofs_delta = 1;
 	if (server_supports("side-band-64k"))
 		use_sideband = 1;
+	if (!server_supports("quiet"))
+		args->quiet = 0;
 
 	if (!remote_refs) {
 		fprintf(stderr, "No refs in common and none specified; doing nothing.\n"
@@ -301,11 +303,12 @@ int send_pack(struct send_pack_args *args,
 			char *old_hex = sha1_to_hex(ref->old_sha1);
 			char *new_hex = sha1_to_hex(ref->new_sha1);
 
-			if (!cmds_sent && (status_report || use_sideband)) {
-				packet_buf_write(&req_buf, "%s %s %s%c%s%s",
+			if (!cmds_sent && (status_report || use_sideband || args->quiet)) {
+				packet_buf_write(&req_buf, "%s %s %s%c%s%s%s",
 					old_hex, new_hex, ref->name, 0,
 					status_report ? " report-status" : "",
-					use_sideband ? " side-band-64k" : "");
+					use_sideband ? " side-band-64k" : "",
+					args->quiet ? " quiet" : "");
 			}
 			else
 				packet_buf_write(&req_buf, "%s %s %s",
@@ -439,6 +442,10 @@ int cmd_send_pack(int argc, const char **argv, const char *prefix)
 				args.force_update = 1;
 				continue;
 			}
+			if (!strcmp(arg, "--quiet")) {
+				args.quiet = 1;
+				continue;
+			}
 			if (!strcmp(arg, "--verbose")) {
 				args.verbose = 1;
 				continue;
diff --git a/remote-curl.c b/remote-curl.c
index b8cf45a..2341106 100644
--- a/remote-curl.c
+++ b/remote-curl.c
@@ -762,7 +762,9 @@ static int push_git(struct discovery *heads, int nr_spec, char **specs)
 		argv[argc++] = "--thin";
 	if (options.dry_run)
 		argv[argc++] = "--dry-run";
-	if (options.verbosity > 1)
+	if (options.verbosity == 0)
+		argv[argc++] = "--quiet";
+	else if (options.verbosity > 1)
 		argv[argc++] = "--verbose";
 	argv[argc++] = url;
 	for (i = 0; i < nr_spec; i++)
diff --git a/t/t5523-push-upstream.sh b/t/t5523-push-upstream.sh
index c229fe6..9ee52cf 100755
--- a/t/t5523-push-upstream.sh
+++ b/t/t5523-push-upstream.sh
@@ -108,4 +108,11 @@ test_expect_failure TTY 'push --no-progress suppresses progress' '
 	! grep "Writing objects" err
 '
 
+test_expect_success TTY 'quiet push' '
+	ensure_fresh_upstream &&
+
+	test_terminal git push --quiet --no-progress upstream master 2>&1 | tee output &&
+	test_cmp /dev/null output
+'
+
 test_done
diff --git a/t/t5541-http-push.sh b/t/t5541-http-push.sh
index a73c826..e756a08 100755
--- a/t/t5541-http-push.sh
+++ b/t/t5541-http-push.sh
@@ -5,6 +5,7 @@
 
 test_description='test smart pushing over http via http-backend'
 . ./test-lib.sh
+. "$TEST_DIRECTORY"/lib-terminal.sh
 
 if test -n "$NO_CURL"; then
 	skip_all='skipping test, git built without http support'
@@ -154,5 +155,12 @@ test_expect_success 'push (chunked)' '
 	 test $HEAD = $(git rev-parse --verify HEAD))
 '
 
+test_expect_success TTY 'quiet push' '
+	cd "$ROOT_PATH"/test_repo_clone &&
+	test_commit quiet &&
+	test_terminal git push --quiet --no-progress 2>&1 | tee output &&
+	test_cmp /dev/null output
+'
+
 stop_httpd
 test_done
-- 
1.7.6.1
Clemens Buchacher· Sep 23, 2011, 11:55 UTC · re: Junio C Hamano · lore

[PATCH] use -h for synopsis and --help for manpage consistently

Signed-off-by: Clemens Buchacher <drizzd@aon.at>
---
On Wed, Sep 21, 2011 at 10:04:28PM -0700, Junio C Hamano wrote:
Show 7 quoted lines
> 
> * cb/send-email-help (2011-09-12) 1 commit
>   (merged to 'next' on 2011-09-14 at ae71999)
>  + send-email: add option -h
> 
> A separate set of patches to remove the hidden fully-spelled "help" from
> other commands would be nice to have as companion patches as well.
This should do it.
Clemens
 Documentation/blame-options.txt |    1 -
 git-cvsserver.perl              |    4 ++--
 git-difftool.perl               |    2 +-
 git-pull.sh                     |    2 +-
 git-sh-setup.sh                 |    2 +-
 git-svn.perl                    |    2 +-
 6 files changed, 6 insertions(+), 7 deletions(-)
diff --git a/Documentation/blame-options.txt b/Documentation/blame-options.txt
index e76195a..d4a51da 100644
--- a/Documentation/blame-options.txt
+++ b/Documentation/blame-options.txt
@@ -117,5 +117,4 @@ commit. And the default value is 40. If there are more than one
 take effect.
 
 -h::
---help::
 	Show help message.
diff --git a/git-cvsserver.perl b/git-cvsserver.perl
index 1b8bff2..6c5185e 100755
--- a/git-cvsserver.perl
+++ b/git-cvsserver.perl
@@ -109,14 +109,14 @@ my $usage =
     "    --strict-paths      : Don't allow recursing into subdirectories\n".
     "    --export-all        : Don't check for gitcvs.enabled in config\n".
     "    --version, -V       : Print version information and exit\n".
-    "    --help, -h, -H      : Print usage information and exit\n".
+    "    -h                  : Print usage information and exit\n".
     "\n".
     "<directory> ... is a list of allowed directories. If no directories\n".
     "are given, all are allowed. This is an additional restriction, gitcvs\n".
     "access still needs to be enabled by the gitcvs.enabled config option.\n".
     "Alternately, one directory may be specified in GIT_CVSSERVER_ROOT.\n";
 
-my @opts = ( 'help|h|H', 'version|V',
+my @opts = ( 'h', 'version|V',
 	     'base-path=s', 'strict-paths', 'export-all' );
 GetOptions( $state, @opts )
     or die $usage;
diff --git a/git-difftool.perl b/git-difftool.perl
index ced1615..09b65f1 100755
--- a/git-difftool.perl
+++ b/git-difftool.perl
@@ -97,7 +97,7 @@ sub generate_command
 			$prompt = 'yes';
 			next;
 		}
-		if ($arg eq '-h' || $arg eq '--help') {
+		if ($arg eq '-h') {
 			usage();
 		}
 		push @command, $arg;
diff --git a/git-pull.sh b/git-pull.sh
index 63da37b..8c1370f 100755
--- a/git-pull.sh
+++ b/git-pull.sh
@@ -120,7 +120,7 @@ do
 	--d|--dr|--dry|--dry-|--dry-r|--dry-ru|--dry-run)
 		dry_run=--dry-run
 		;;
-	-h|--h|--he|--hel|--help|--help-|--help-a|--help-al|--help-all)
+	-h|--help-all)
 		usage
 		;;
 	*)
diff --git a/git-sh-setup.sh b/git-sh-setup.sh
index 8e427da..1fba6c2 100644
--- a/git-sh-setup.sh
+++ b/git-sh-setup.sh
@@ -90,7 +90,7 @@ $LONG_USAGE"
 	fi
 
 	case "$1" in
-		-h|--h|--he|--hel|--help)
+		-h)
 		echo "$LONG_USAGE"
 		exit
 	esac
diff --git a/git-svn.perl b/git-svn.perl
index 89f83fd..a019f55 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -294,7 +294,7 @@ read_git_config(\%opts);
 if ($cmd && ($cmd eq 'log' || $cmd eq 'blame')) {
 	Getopt::Long::Configure('pass_through');
 }
-my $rv = GetOptions(%opts, 'help|H|h' => \$_help, 'version|V' => \$_version,
+my $rv = GetOptions(%opts, 'h' => \$_help, 'version|V' => \$_version,
                     'minimize-connections' => \$Git::SVN::Migration::_minimize,
                     'id|i=s' => \$Git::SVN::default_ref_id,
                     'svn-remote|remote|R=s' => sub {
-- 
1.7.6.1
Scott Chacon· Sep 23, 2011, 14:44 UTC · re: Junio C Hamano · lore

Re: What's cooking in git.git (Sep 2011, #06; Wed, 21)

Hey,
On Wed, Sep 21, 2011 at 10:04 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 19 quoted lines
> Here are the topics that have been cooking.  Commits prefixed with '-' are
> only in 'pu' while commits prefixed with '+' are in 'next'.
>
> Here are the repositories that have my integration branches:
>
> With maint, master, next, pu and todo:
>
>        url = git://repo.or.cz/alt-git.git
>        url = https://code.google.com/p/git-core/
>
> With only maint and master:
>
>        url = git://git.sourceforge.jp/gitroot/git-core/git.git
>        url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
>
> With all the topics and integration branches:
>
>        url = https://github.com/gitster/git
>

It appears that you're no longer pushing the 'html' branch to the GitHub repo, but you are to some of the other ones, which is sort of strange because *everything* else is there.

Since the k.org hosting of the man pages is down, I was working on putting them on git-scm.com, where you could select which version of the docs you want to see and could search through them and whatnot. Can you push 'html' to GitHub too? I want to pull my data out of it on an ongoing basis and it's the only one with a git object level API.

Thanks, Scott

Junio C Hamano· Sep 23, 2011, 18:00 UTC · re: Scott Chacon · lore

Re: What's cooking in git.git (Sep 2011, #06; Wed, 21)

Scott Chacon <schacon@gmail.com> writes:
> It appears that you're no longer pushing the 'html' branch to the
> GitHub repo,...
It is not even "no longer".

Unlike the other public mirrors that are designed to mimic what my repository at k.org looks like, https://github.com/gitster/git is primarily meant to mirror my internal development repository, with the full set of topic branches.

As I do not have 'html' as a branch in my development repository, the result "git push --mirror" there never had refs/heads/html, either.

My workflow used to be:
 - push 4 integration branches from the development repository to k.org,
   and have its update hook update html and man branches there;
 - optionally push todo from a different private repository to k.org;
 - fetch back refs/heads/* from k.org to refs/remotes/ko/*;
 - verify that my refs/heads/* and refs/remotes/ko/* match for 4 integration
   branches;
 - push stuff under refs/remotes/ko/* to public mirrors (sourceforge does
   not get next and pu);
 - push --mirror to https://github.com/gitster/git.
Now the interim workflow, until k.org comes back, is tentatively:
 - in a separate local "formatting" repository, pull 'master' from my
   development repository, build html and man there, and push them back
   to refs/docs/{html,man} to my development repository;
 - push refs/heads/{master,maint,next,pu} and refs/docs/{html,man} to
   public mirrors (sourceforge does not get next and pu);
 - push --mirror to https://github.com/gitster/git.

I am hoping that I do not have to keep doing this and refs/docs/ can eventually go away. I specifically do _not_ want the administrative non-source branches html/man/todo to be my local branches.

> Since the k.org hosting of the man pages is down, I was working on
> putting them on git-scm.com, where you could select which version of
> the docs you want to see and could search through them and whatnot.
What is the expected the end-user page-flow?

Would people come to https://github.com/gitster/git first, find "doc" link there, and start browsing the html version of the documentation?

Or do people come to http://github.com/, find a link "documentation for the scm this site supports", your machinery kicks in and serves the blobs from https://github.com/gitster/git under the hood, without letting users know where the pages they are looking at really come from?

What I am getting at is that if these users do not need to know about my repository, then you do not _need_ to see html branch in my repository, either. You only need to find it _somewhere_, and that somewhere does not have to be https://github.com/gitster/git repository.

You may think you could use refs/docs/html but I would rather want to avoid letting you guys rely on refs/docs/ I started using just a few days ago as an interim measure. I may later change my mind and get rid of that from my development repository, but that would break your machinery to show preformatted documentation pages.

I could add a _separate_ repository at github, and treat it just like other public mirrors like repo.or.cz, so that you can find html branch there. That would be consistent with my wish to use "push --mirror" to at least one place (https://github.com/gitster/git), and would be easier to manage for me.

Would that work?
Junio C Hamano· Sep 23, 2011, 19:29 UTC · re: Junio C Hamano · lore

Re: What's cooking in git.git (Sep 2011, #06; Wed, 21)

Junio C Hamano <gitster@pobox.com> writes:
Show 6 quoted lines
> Scott Chacon <schacon@gmail.com> writes:
>
>> It appears that you're no longer pushing the 'html' branch to the
>> GitHub repo,...
>
> It is not even "no longer".

It just occurred to me that https://github.com/git/git repository might be the one you are talking about, but that repository is not even mine. The page at https://github.com/git says git@logicalawesome.com is its contact person.

I _suspect_ it is set up to mirror from my k.org repository and obviously nothing is updated from that route for the past few weeks. It is correct to say "html branch in that repository is no longer updated", but I cannot do anything about that repository ;-).

Scott Chacon· Sep 26, 2011, 14:03 UTC · re: Junio C Hamano · lore

Re: What's cooking in git.git (Sep 2011, #06; Wed, 21)

Hey,
On Fri, Sep 23, 2011 at 12:29 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 9 quoted lines
> It just occurred to me that https://github.com/git/git repository might be
> the one you are talking about, but that repository is not even mine.  The
> page at https://github.com/git says git@logicalawesome.com is its contact
> person.
>
> I _suspect_ it is set up to mirror from my k.org repository and obviously
> nothing is updated from that route for the past few weeks. It is correct
> to say "html branch in that repository is no longer updated", but I cannot
> do anything about that repository ;-).

git/git is a mirror I set up from k.org years ago for git-scm.com. I believe you've been a collaborator on it for a while now, so you can push to it if you'd like. The mirroring system is down since k.org died and I've since moved it off the host I had been using to Heroku, so I can't do the mirroring that way anymore. If you want to push to it I'll leave it there, otherwise I'll reroot your repo to be the head of the GitHub network instead.

Junio C Hamano· Sep 26, 2011, 18:52 UTC · re: Scott Chacon · lore

Re: What's cooking in git.git (Sep 2011, #06; Wed, 21)

Scott Chacon <schacon@gmail.com> writes:
Show 18 quoted lines
> On Fri, Sep 23, 2011 at 12:29 PM, Junio C Hamano <gitster@pobox.com> wrote:
>> It just occurred to me that https://github.com/git/git repository might be
>> the one you are talking about, but that repository is not even mine. The
>> page at https://github.com/git says git@logicalawesome.com is its contact
>> person.
>>
>> I _suspect_ it is set up to mirror from my k.org repository and obviously
>> nothing is updated from that route for the past few weeks. It is correct
>> to say "html branch in that repository is no longer updated", but I cannot
>> do anything about that repository ;-).
>
> git/git is a mirror I set up from k.org years ago for git-scm.com. I
> believe you've been a collaborator on it for a while now, so you can
> push to it if you'd like.  The mirroring system is down since k.org
> died and I've since moved it off the host I had been using to Heroku,
> so I can't do the mirroring that way anymore.  If you want to push to
> it I'll leave it there, otherwise I'll reroot your repo to be the head
> of the GitHub network instead.

Ok, to clarify this discussion for people who have been pulling from me and have been wondering where to reset their "origin" to...

 * I'll start to also push into https://github.com/git/git/ directly,
   treating it like git://repo.or.cz/alt-git.git/ and other secondary
   distribution points, that have the integration branches, todo, html and
   man.
 * Eventually git://git.kernel.org/pub/scm/git/git.git/ will again start
   receiving my direct pushes just like it used to. The secondary
   distribution points will also get my pushes directly (I've made sure
   with Scott that mirroring into https://github.com/git/git/ from my
   k.org repository will stay turned off).
 * https://github.com/gitster/git.git/ will stay a mirror of my private
   development repository with the topic branches (but without non-source
   branches like html and mah).

I haven't figured out how the preformatted documentation branches will be managed in the longer term, as it seems likely that I no longer would have the post-update hook access to update them upon pushing into my k.org repository. I might end up dropping these branches altogether if it gets too cumbersome for me to maintain, but I do not know yet.

Jay Soffian· Sep 27, 2011, 02:08 UTC · re: Junio C Hamano · lore

Re: What's cooking in git.git (Sep 2011, #06; Wed, 21)

On Mon, Sep 26, 2011 at 2:52 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 5 quoted lines
> I haven't figured out how the preformatted documentation branches will be
> managed in the longer term, as it seems likely that I no longer would have
> the post-update hook access to update them upon pushing into my k.org
> repository. I might end up dropping these branches altogether if it gets
> too cumbersome for me to maintain, but I do not know yet.

Building the documentation on OS X is a huge pain. OS X users definitely appreciate the preformatted documentation. I know that Homebrew uses it, and I think the git-osx-installer recently discussed on this list uses it as well.

So, uh, maybe a way can be found to make it less cumbersome for you?
j.
Clemens Buchacher· Oct 5, 2011, 06:31 UTC · re: Junio C Hamano · lore

[PATCH] fix push --quiet: add 'quiet' capability to receive-pack

Hi Junio,
Since 1.7.7 is out now, maybe you would like to pick this up again.

Cheers, Clemens

On Wed, Sep 21, 2011 at 10:04:28PM -0700, Junio C Hamano wrote:
Show 8 quoted lines
> 
> * cb/maint-quiet-push (2011-09-05) 4 commits
>  . t5541: avoid TAP test miscounting
>  . push: old receive-pack does not understand --quiet
>  . fix push --quiet via http
>  . tests for push --quiet
> 
> Dropped for rerolling after 1.7.7 cycle.

This is the re-rolled version based on current master, without the backwards incompatible receive-pack --quiet option.

I squashed the tests in and added your unpack(void) fixup.

I have not added Michael's "t5541: avoid TAP test miscounting" since I cannot reproduce the error:

 http://mid.gmane.org/e4e82f1267da3edfc600361de0041f618c31e30c.1315232475.git.git@drmicha.warpmail.net

And there is also this related patch "server_supports(): parse feature list more carefully", which looked good to me:

 http://mid.gmane.org/7vmxejy9od.fsf@alter.siamese.dyndns.org
Does it need more work?
Clemens

--o<-- Currently, git push --quiet produces some non-error output, e.g.:

 $ git push --quiet
 Unpacking objects: 100% (3/3), done.
This fixes a bug reported for the fedora git package:
 https://bugzilla.redhat.com/show_bug.cgi?id=725593

Commit 90a6c7d4 (propagate --quiet to send-pack/receive-pack) introduced the --quiet option to receive-pack and made send-pack pass that option. Older versions of receive-pack do not recognize the option, however, and terminate immediately. The commit was therefore reverted.

This change instead adds a 'quiet' capability to receive-pack, which is a backwards compatible.

In addition, this fixes push --quiet via http: A verbosity of 0 means quiet for remote helpers.

Reported-by: Jesse Keating <jkeating@redhat.com>
Reported-by: Tobias Ulmer <tobiasu@tmux.org>
Cc: Todd Zullinger <tmz@pobox.com>
Signed-off-by: Clemens Buchacher <drizzd@aon.at>
---
 builtin/receive-pack.c   |   14 ++++++++++++--
 builtin/send-pack.c      |   13 ++++++++++---
 remote-curl.c            |    4 +++-
 t/t5523-push-upstream.sh |    7 +++++++
 t/t5541-http-push.sh     |    8 ++++++++
 5 files changed, 40 insertions(+), 6 deletions(-)
diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c
index ae164da..4419323 100644
--- a/builtin/receive-pack.c
+++ b/builtin/receive-pack.c
@@ -31,6 +31,7 @@ static int transfer_unpack_limit = -1;
 static int unpack_limit = 100;
 static int report_status;
 static int use_sideband;
+static int quiet;
 static int prefer_ofs_delta = 1;
 static int auto_update_server_info;
 static int auto_gc = 1;
@@ -114,7 +115,7 @@ static int show_ref(const char *path, const unsigned char *sha1, int flag, void
 	else
 		packet_write(1, "%s %s%c%s%s\n",
 			     sha1_to_hex(sha1), path, 0,
-			     " report-status delete-refs side-band-64k",
+			     " report-status delete-refs side-band-64k quiet",
 			     prefer_ofs_delta ? " ofs-delta" : "");
 	sent_capabilities = 1;
 	return 0;
@@ -636,6 +637,8 @@ static struct command *read_head_info(void)
 				report_status = 1;
 			if (strstr(refname + reflen + 1, "side-band-64k"))
 				use_sideband = LARGE_PACKET_MAX;
+			if (strstr(refname + reflen + 1, "quiet"))
+				quiet = 1;
 		}
 		cmd = xcalloc(1, sizeof(struct command) + len - 80);
 		hashcpy(cmd->old_sha1, old_sha1);
@@ -684,8 +687,10 @@ static const char *unpack(void)
 
 	if (ntohl(hdr.hdr_entries) < unpack_limit) {
 		int code, i = 0;
-		const char *unpacker[4];
+		const char *unpacker[5];
 		unpacker[i++] = "unpack-objects";
+		if (quiet)
+			unpacker[i++] = "-q";
 		if (receive_fsck_objects)
 			unpacker[i++] = "--strict";
 		unpacker[i++] = hdr_arg;
@@ -799,6 +804,11 @@ int cmd_receive_pack(int argc, const char **argv, const char *prefix)
 		const char *arg = *argv++;
 
 		if (*arg == '-') {
+			if (!strcmp(arg, "--quiet")) {
+				quiet = 1;
+				continue;
+			}
+
 			if (!strcmp(arg, "--advertise-refs")) {
 				advertise_refs = 1;
 				continue;
diff --git a/builtin/send-pack.c b/builtin/send-pack.c
index c1f6ddd..a8d6b4c 100644
--- a/builtin/send-pack.c
+++ b/builtin/send-pack.c
@@ -263,6 +263,8 @@ int send_pack(struct send_pack_args *args,
 		args->use_ofs_delta = 1;
 	if (server_supports("side-band-64k"))
 		use_sideband = 1;
+	if (!server_supports("quiet"))
+		args->quiet = 0;
 
 	if (!remote_refs) {
 		fprintf(stderr, "No refs in common and none specified; doing nothing.\n"
@@ -301,11 +303,12 @@ int send_pack(struct send_pack_args *args,
 			char *old_hex = sha1_to_hex(ref->old_sha1);
 			char *new_hex = sha1_to_hex(ref->new_sha1);
 
-			if (!cmds_sent && (status_report || use_sideband)) {
-				packet_buf_write(&req_buf, "%s %s %s%c%s%s",
+			if (!cmds_sent && (status_report || use_sideband || args->quiet)) {
+				packet_buf_write(&req_buf, "%s %s %s%c%s%s%s",
 					old_hex, new_hex, ref->name, 0,
 					status_report ? " report-status" : "",
-					use_sideband ? " side-band-64k" : "");
+					use_sideband ? " side-band-64k" : "",
+					args->quiet ? " quiet" : "");
 			}
 			else
 				packet_buf_write(&req_buf, "%s %s %s",
@@ -439,6 +442,10 @@ int cmd_send_pack(int argc, const char **argv, const char *prefix)
 				args.force_update = 1;
 				continue;
 			}
+			if (!strcmp(arg, "--quiet")) {
+				args.quiet = 1;
+				continue;
+			}
 			if (!strcmp(arg, "--verbose")) {
 				args.verbose = 1;
 				continue;
diff --git a/remote-curl.c b/remote-curl.c
index b8cf45a..2341106 100644
--- a/remote-curl.c
+++ b/remote-curl.c
@@ -762,7 +762,9 @@ static int push_git(struct discovery *heads, int nr_spec, char **specs)
 		argv[argc++] = "--thin";
 	if (options.dry_run)
 		argv[argc++] = "--dry-run";
-	if (options.verbosity > 1)
+	if (options.verbosity == 0)
+		argv[argc++] = "--quiet";
+	else if (options.verbosity > 1)
 		argv[argc++] = "--verbose";
 	argv[argc++] = url;
 	for (i = 0; i < nr_spec; i++)
diff --git a/t/t5523-push-upstream.sh b/t/t5523-push-upstream.sh
index c229fe6..9ee52cf 100755
--- a/t/t5523-push-upstream.sh
+++ b/t/t5523-push-upstream.sh
@@ -108,4 +108,11 @@ test_expect_failure TTY 'push --no-progress suppresses progress' '
 	! grep "Writing objects" err
 '
 
+test_expect_success TTY 'quiet push' '
+	ensure_fresh_upstream &&
+
+	test_terminal git push --quiet --no-progress upstream master 2>&1 | tee output &&
+	test_cmp /dev/null output
+'
+
 test_done
diff --git a/t/t5541-http-push.sh b/t/t5541-http-push.sh
index a73c826..e756a08 100755
--- a/t/t5541-http-push.sh
+++ b/t/t5541-http-push.sh
@@ -5,6 +5,7 @@
 
 test_description='test smart pushing over http via http-backend'
 . ./test-lib.sh
+. "$TEST_DIRECTORY"/lib-terminal.sh
 
 if test -n "$NO_CURL"; then
 	skip_all='skipping test, git built without http support'
@@ -154,5 +155,12 @@ test_expect_success 'push (chunked)' '
 	 test $HEAD = $(git rev-parse --verify HEAD))
 '
 
+test_expect_success TTY 'quiet push' '
+	cd "$ROOT_PATH"/test_repo_clone &&
+	test_commit quiet &&
+	test_terminal git push --quiet --no-progress 2>&1 | tee output &&
+	test_cmp /dev/null output
+'
+
 stop_httpd
 test_done
-- 
1.7.6.1
Junio C Hamano· Oct 3, 2011, 22:03 UTC · lore

Re: [PATCH] use -h for synopsis and --help for manpage consistently

Clemens Buchacher <drizzd@aon.at> writes:
> Hi Junio,
>
> This is a re-send in case you missed it.
Thanks.
Show 26 quoted lines
> Cheers,
> Clemens
>
> --8<--
>
> Signed-off-by: Clemens Buchacher <drizzd@aon.at>
> ---
> ...
> diff --git a/git-cvsserver.perl b/git-cvsserver.perl
> index 1b8bff2..6c5185e 100755
> --- a/git-cvsserver.perl
> +++ b/git-cvsserver.perl
> @@ -109,14 +109,14 @@ my $usage =
>      "    --strict-paths      : Don't allow recursing into subdirectories\n".
>      "    --export-all        : Don't check for gitcvs.enabled in config\n".
>      "    --version, -V       : Print version information and exit\n".
> -    "    --help, -h, -H      : Print usage information and exit\n".
> +    "    -h                  : Print usage information and exit\n".
>      "\n".
>      "<directory> ... is a list of allowed directories. If no directories\n".
>      "are given, all are allowed. This is an additional restriction, gitcvs\n".
>      "access still needs to be enabled by the gitcvs.enabled config option.\n".
>      "Alternately, one directory may be specified in GIT_CVSSERVER_ROOT.\n";
>  
> -my @opts = ( 'help|h|H', 'version|V',
> +my @opts = ( 'h', 'version|V',
I am a bit skeptical about the removal of 'H' here (also in git-svn).

Granted, no sane script would have ever used "-H" (or "-h" for that matter) so there is little chance for this to introduce a painful regression.

Clemens Buchacher· Oct 5, 2011, 06:33 UTC · re: Junio C Hamano · lore

Re: [PATCH] use -h for synopsis and --help for manpage consistently

On Mon, Oct 03, 2011 at 03:03:51PM -0700, Junio C Hamano wrote:
Show 5 quoted lines
> >  
> > -my @opts = ( 'help|h|H', 'version|V',
> > +my @opts = ( 'h', 'version|V',
> 
> I am a bit skeptical about the removal of 'H' here (also in git-svn).
I see. I'm ok with your fixup.
Clemens

← back to recent threads