git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* What's cooking in git.git (Jun 2011, #02; Sat, 11)
@ 2011-06-12  6:49 Junio C Hamano
  2011-06-12 12:14 ` Ramkumar Ramachandra
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Junio C Hamano @ 2011-06-12  6:49 UTC (permalink / raw
  To: git

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

Will tag 1.7.6-rc2 sometime next week.

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

* js/i18n-windows (2011-06-06) 3 commits
  (merged to 'next' on 2011-06-06 at d8c4ba3)
 + Windows: teach getenv to do a case-sensitive search
 + mingw.c: move definition of mingw_getenv down
 + sh-i18n--envsubst: do not crash when no arguments are given

Looked sane but will wait for msysgit folks to take a look.
Not urgent. Will not merge before 1.7.6.

* an/shallow-doc (2011-06-08) 2 commits
 - Document the underlying protocol used by shallow repositories and --depth commands.
 - Fix documentation of fetch-pack that implies that the client can disconnect after sending wants.

Waiting for a review, but looked sensible.

* jc/legacy-loose-object (2011-06-08) 1 commit
 - sha1_file.c: "legacy" is really the current format

* jc/zlib-wrap (2011-06-10) 7 commits
 - zlib: allow feeding more than 4GB in one go
 - zlib: zlib can only process 4GB at a time
 - zlib: wrap deflateBound() too
 - zlib: wrap deflate side of the API
 - zlib: wrap inflateInit2 used to accept only for gzip format
 - zlib: wrap remaining calls to direct inflate/inflateEnd
 - zlib wrapper: refactor error message formatter

This replaces the earlier attempt to deal with the mismatch between our
expectation and what zlib API actually offers piecemeal.

* jk/clone-cmdline-config (2011-06-11) 10 commits
 - clone: accept config options on the command line
 - config: make git_config_parse_parameter a public function
 - remote: use new OPT_STRING_LIST
 - parse-options: add OPT_STRING_LIST helper
 - config: use strbuf_split_str instead of a temporary strbuf
 - strbuf: allow strbuf_split to work on non-strbufs
 - config: avoid segfault when parsing command-line config
 - config: die on error in command-line config
 - fix "git -c" parsing of values with equals signs
 - strbuf_split: add a max parameter

* jk/tag-contains-ab (2011-06-11) 4 commits
 - Why is "git tag --contains" so slow?
 - default core.clockskew variable to one day
 - limit "contains" traversals based on commit timestamp
 - tag: speed up --contains calculation

* jk/transport-helper-fix (2011-06-07) 8 commits
 - git_remote_helpers: push all refs during a non-local export
 - transport-helper: don't feed bogus refs to export push
 - teach remote-testgit to import multiple refs
 - teach remote-testgit to import non-HEAD refs
 - t5800: document some non-functional parts of remote helpers
 - t5800: factor out some ref tests
 - git-remote-testgit: exit gracefully after push
 - transport-helper: fix minor leak in push_refs_with_export

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

* bc/maint-status-z-to-use-porcelain (2011-05-29) 2 commits
  (merged to 'next' on 2011-06-01 at 4f44a91)
 + builtin/commit.c: set status_format _after_ option parsing
 + t7508: demonstrate status's failure to use --porcelain format with -z

* jk/diff-not-so-quick (2011-05-31) 2 commits
  (merged to 'next' on 2011-06-01 at 5f66784)
 + diff: futureproof "stop feeding the backend early" logic
 + diff_tree: disable QUICK optimization with diff filter
 (this branch is used by jc/diff-index-quick-exit-early.)

* jn/gitweb-docs (2011-06-03) 3 commits
  (merged to 'next' on 2011-06-05 at 691c7e6)
 + gitweb: Move "Requirements" up in gitweb/INSTALL
  (merged to 'next' on 2011-06-02 at 56cba41)
 + gitweb: Describe CSSMIN and JSMIN in gitweb/INSTALL
 + gitweb: Move information about installation from README to INSTALL

* jn/mime-type-with-params (2011-06-05) 1 commit
  (merged to 'next' on 2011-06-05 at 697f9d2)
 + gitweb: Fix usability of $prevent_xss

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

* js/ref-namespaces (2011-06-07) 4 commits
 . ref namespaces: documentation
 . ref namespaces: support remote repositories via upload-pack and receive-pack
 . ref namespaces: infrastructure
 . Fix prefix handling in ref iteration functions

Fairly involved feature enhancement, and breaks tests when merged to 'pu'.
Not urgent. Will not merge before 1.7.6.

* jk/maint-merge-rename-create (2011-03-25) 3 commits
 - merge: turn on rewrite detection
 - merge: handle renames with replacement content
 - t3030: fix accidental success in symlink rename

Peff wanted to reroll this. Perhaps will discard to make room for Elijah's
merge-recursive series in the meantime.

* jc/index-pack (2011-06-05) 9 commits
 - verify-pack: use index-pack --verify
 - index-pack: show histogram when emulating "verify-pack -v"
 - index-pack: start learning to emulate "verify-pack -v"
 - index-pack: a miniscule refactor
 - index-pack --verify: read anomalous offsets from v2 idx file
 - write_idx_file: need_large_offset() helper function
 - index-pack: --verify
 - write_idx_file: introduce a struct to hold idx customization options
 - index-pack: group the delta-base array entries also by type

Killed "verify-pack" ;-) The next will be to update fsck, which would be a
bigger task.

Not urgent. Will not merge before 1.7.6.

* 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.
Not urgent. Will not merge before 1.7.6.

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

* db/http-cookies (2011-06-03) 1 commit
  (merged to 'next' on 2011-06-06 at 90d736a)
 + http: pass http.cookiefile using CURLOPT_COOKIEFILE

Fairly trivial enhancement.
Not urgent. Will not merge before 1.7.6.

* jc/maint-1.7.3-checkout-describe (2011-06-05) 1 commit
  (merged to 'next' on 2011-06-06 at 6a59bb7)
 + checkout -b <name>: correctly detect existing branch

Fairly trivial bugfix.
Not urgent. Will not merge before 1.7.6.

* jk/clone-detached (2011-06-07) 5 commits
 . remote-testgit: short-term fix to allow t5800 pass
 - clone: always fetch remote HEAD
 - make copy_ref globally available
 - consider only branches in guess_remote_head
 - t: add tests for cloning remotes with detached HEAD

Somewhat involved bugfix.
Not urgent. Will not merge before 1.7.6.

* jk/maint-1.7.2-status-ignored (2011-06-02) 2 commits
  (merged to 'next' on 2011-06-02 at 8626cc6)
 + git status --ignored: tests and docs
 + status: fix bug with missing --ignore files

Fairly trivial bugfix.
Not urgent. Will not merge before 1.7.6.

* jl/submodule-add-relurl-wo-upstream (2011-06-06) 3 commits
 - submodule add: clean up duplicated code
 - submodule add: allow relative repository path even when no url is set
 - submodule add: test failure when url is not configured in superproject

Not urgent. Will not merge before 1.7.6.

* rs/grep-color (2011-06-05) 3 commits
  (merged to 'next' on 2011-06-06 at fd6bae1)
 + grep: add --heading
 + grep: add --break
 + grep: fix coloring of hunk marks between files

Fairly straightforward feature enhancement.
Not urgent. Will not merge before 1.7.6.

* jc/diff-index-quick-exit-early (2011-05-31) 2 commits
  (merged to 'next' on 2011-06-01 at 79d868a)
 + diff-index --quiet: learn the "stop feeding the backend early" logic
 + Merge remote-tracking branch 'ko/maint' into jc/diff-index-quick-exit-early

Not urgent. Will not merge before 1.7.6.

* ef/maint-win-verify-path (2011-06-08) 5 commits
 - verify_dotfile(): do not assume '/' is the path seperator
  (merged to 'next' on 2011-06-07 at b418e05)
 + verify_path(): simplify check at the directory boundary
  (merged to 'next' on 2011-06-01 at f316f68)
 + verify_path: consider dos drive prefix
 + real_path: do not assume '/' is the path seperator
 + A Windows path starting with a backslash is absolute

Not urgent, but is sane. Will not merge before 1.7.6.

* jn/gitweb-js-blame (2011-05-27) 3 commits
  (merged to 'next' on 2011-06-01 at a984a1b)
 + gitweb.js: use setTimeout rather than setInterval in blame_incremental.js
 + gitweb.js: No need for loop in blame_incremental's handleResponse()
 + gitweb.js: No need for inProgress in blame_incremental.js

Will cook a bit longer.

* mg/diff-stat-count (2011-05-27) 4 commits
  (merged to 'next' on 2011-06-01 at 5cdb776)
 + diff --stat-count: finishing touches
 + diff-options.txt: describe --stat-{width,name-width,count}
 + diff: introduce --stat-lines to limit the stat lines
 + diff.c: omit hidden entries from namelen calculation with --stat

Not urgent. Will not merge before 1.7.6.

* da/git-prefix-everywhere (2011-06-02) 4 commits
  (merged to 'next' on 2011-06-02 at 2ab66e7)
 + t/t7503-pre-commit-hook.sh: Add GIT_PREFIX tests
  (merged to 'next' on 2011-05-30 at 9480900)
 + git-mergetool--lib: Make vimdiff retain the current directory
 + git: Remove handling for GIT_PREFIX
 + setup: Provide GIT_PREFIX to built-ins

Not urgent. Will not merge before 1.7.6.

* jc/streaming-filter (2011-05-26) 8 commits
  (merged to 'next' on 2011-06-06 at 8ed6b3d)
 + t0021: test application of both crlf and ident
 + t0021-conversion.sh: fix NoTerminatingSymbolAtEOF test
 + streaming: filter cascading
 + streaming filter: ident filter
 + Add LF-to-CRLF streaming conversion
 + stream filter: add "no more input" to the filters
 + Add streaming filter API
 + convert.h: move declarations for conversion from cache.h
 (this branch uses jc/streaming.)

Trivial lf-to-crlf and ident conversions can be performed without reading
everything in-core first.
Not urgent. Will not merge before 1.7.6.

* jk/combine-diff-binary-etc (2011-05-24) 5 commits
  (merged to 'next' on 2011-05-24 at 07cf180)
 + combine-diff: respect textconv attributes
 + refactor get_textconv to not require diff_filespec
 + combine-diff: handle binary files as binary
 + combine-diff: calculate mode_differs earlier
 + combine-diff: split header printing into its own function

Not urgent. Will not merge before 1.7.6.

* jc/advice-about-to-lose-commit (2011-05-24) 1 commit
  (merged to 'next' on 2011-05-30 at 42385cc)
 + checkout: make advice when reattaching the HEAD less loud

Not urgent. Will not merge before 1.7.6.

* jc/streaming (2011-05-26) 14 commits
  (merged to 'next' on 2011-05-26 at 7fdda8d)
 + sha1_file: use the correct type (ssize_t, not size_t) for read-style function
  (merged to 'next' on 2011-05-23 at 7fd0b52)
 + streaming: read loose objects incrementally
 + sha1_file.c: expose helpers to read loose objects
 + streaming: read non-delta incrementally from a pack
 + streaming_write_entry(): support files with holes
 + convert: CRLF_INPUT is a no-op in the output codepath
 + streaming_write_entry(): use streaming API in write_entry()
 + streaming: a new API to read from the object store
 + write_entry(): separate two helper functions out
 + unpack_object_header(): make it public
 + sha1_object_info_extended(): hint about objects in delta-base cache
 + sha1_object_info_extended(): expose a bit more info
 + packed_object_info_detail(): do not return a string
 + Merge branches 'jc/convert', 'jc/bigfile' and 'jc/replacing' into jc/streaming
 (this branch is used by jc/streaming-filter.)

Not urgent. Will not merge before 1.7.6.

* ab/i18n-scripts (2011-05-21) 48 commits
  (merged to 'next' on 2011-05-23 at 69164a3)
 + i18n: git-bisect bisect_next_check "You need to" message
 + i18n: git-bisect [Y/n] messages
 + i18n: git-bisect bisect_replay + $1 messages
 + i18n: git-bisect bisect_reset + $1 messages
 + i18n: git-bisect bisect_run + $@ messages
 + i18n: git-bisect die + eval_gettext messages
 + i18n: git-bisect die + gettext messages
 + i18n: git-bisect echo + eval_gettext message
 + i18n: git-bisect echo + gettext messages
 + i18n: git-bisect gettext + echo message
 + i18n: git-bisect add git-sh-i18n
 + i18n: git-stash drop_stash say/die messages
 + i18n: git-stash "unknown option" message
 + i18n: git-stash die + eval_gettext $1 messages
 + i18n: git-stash die + eval_gettext $* messages
 + i18n: git-stash die + eval_gettext messages
 + i18n: git-stash die + gettext messages
 + i18n: git-stash say + gettext messages
 + i18n: git-stash echo + gettext message
 + i18n: git-stash add git-sh-i18n
 + i18n: git-submodule "blob" and "submodule" messages
 + i18n: git-submodule "path not initialized" message
 + i18n: git-submodule "[...] path is ignored" message
 + i18n: git-submodule "Entering [...]" message
 + i18n: git-submodule $errmsg messages
 + i18n: git-submodule "Submodule change[...]" messages
 + i18n: git-submodule "cached cannot be used" message
 + i18n: git-submodule $update_module say + die messages
 + i18n: git-submodule die + eval_gettext messages
 + i18n: git-submodule say + eval_gettext messages
 + i18n: git-submodule echo + eval_gettext messages
 + i18n: git-submodule add git-sh-i18n
 + i18n: git-pull eval_gettext + warning message
 + i18n: git-pull eval_gettext + die message
 + i18n: git-pull die messages
 + i18n: git-pull add git-sh-i18n
 + i18n: git-am printf(1) message to eval_gettext
 + i18n: git-am core say messages
 + i18n: git-am "Falling back" say message
 + i18n: git-am "Apply?" message
 + i18n: git-am clean_abort messages
 + i18n: git-am cannot_fallback messages
 + i18n: git-am die messages
 + i18n: git-am gettext + gettext to stderr message
 + i18n: git-am eval_gettext messages
 + i18n: git-am multi-line getttext $msg; echo
 + i18n: git-am one-line gettext $msg; echo
 + i18n: git-am add git-sh-i18n

Rerolled.
Will cook a bit longer.

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

* jc/apply-nsbp (2011-05-27) 4 commits
 . War on nbsp: teach "git apply" to check and fix nbsp
 . War on nbsp: Add "nbsp" whitespace breakage class
 . War on nbsp: a bit of retreat
 . ws.c: add a helper to format comma separated messages

It was fun to write, though.

* jk/tag-contains (2010-07-05) 4 commits
 . Why is "git tag --contains" so slow?
 . default core.clockskew variable to one day
 . limit "contains" traversals based on commit timestamp
 . tag: speed up --contains calculation

This was re-rolled as jk/tag-contans-ab with help from Ævar.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: What's cooking in git.git (Jun 2011, #02; Sat, 11)
  2011-06-12  6:49 What's cooking in git.git (Jun 2011, #02; Sat, 11) Junio C Hamano
@ 2011-06-12 12:14 ` Ramkumar Ramachandra
  2011-06-13  0:17   ` "libify part of reset" mini-series (Re: What's cooking in git.git (Jun 2011, #02; Sat, 11)) Jonathan Nieder
  2011-06-13 13:16   ` What's cooking in git.git (Jun 2011, #02; Sat, 11) Junio C Hamano
  2011-06-12 16:18 ` Sverre Rabbelier
  2011-06-14  4:27 ` Elijah Newren
  2 siblings, 2 replies; 9+ messages in thread
From: Ramkumar Ramachandra @ 2011-06-12 12:14 UTC (permalink / raw
  To: Junio C Hamano; +Cc: git

Hi Junio,

Have you seen my "libify reset" patch [1]?  I thought it was an easy candidate.

Thanks.

-- Ram

[1]: http://mid.gmane.org/1307772613-30775-1-git-send-email-artagnon@gmail.com

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: What's cooking in git.git (Jun 2011, #02; Sat, 11)
  2011-06-12  6:49 What's cooking in git.git (Jun 2011, #02; Sat, 11) Junio C Hamano
  2011-06-12 12:14 ` Ramkumar Ramachandra
@ 2011-06-12 16:18 ` Sverre Rabbelier
  2011-06-13 15:25   ` Junio C Hamano
  2011-06-14  4:27 ` Elijah Newren
  2 siblings, 1 reply; 9+ messages in thread
From: Sverre Rabbelier @ 2011-06-12 16:18 UTC (permalink / raw
  To: Junio C Hamano; +Cc: git

Heya,

On Sun, Jun 12, 2011 at 08:49, Junio C Hamano <gitster@pobox.com> wrote:
> * jk/transport-helper-fix (2011-06-07) 8 commits
>  - git_remote_helpers: push all refs during a non-local export
>  - transport-helper: don't feed bogus refs to export push
>  - teach remote-testgit to import multiple refs
>  - teach remote-testgit to import non-HEAD refs
>  - t5800: document some non-functional parts of remote helpers
>  - t5800: factor out some ref tests
>  - git-remote-testgit: exit gracefully after push
>  - transport-helper: fix minor leak in push_refs_with_export

Note that I sent a reroll of this series (of which I'll send another
version soon) which is a little more elegant in some places.

-- 
Cheers,

Sverre Rabbelier

^ permalink raw reply	[flat|nested] 9+ messages in thread

* "libify part of reset" mini-series (Re: What's cooking in git.git (Jun 2011, #02; Sat, 11))
  2011-06-12 12:14 ` Ramkumar Ramachandra
@ 2011-06-13  0:17   ` Jonathan Nieder
  2011-06-13 13:16   ` What's cooking in git.git (Jun 2011, #02; Sat, 11) Junio C Hamano
  1 sibling, 0 replies; 9+ messages in thread
From: Jonathan Nieder @ 2011-06-13  0:17 UTC (permalink / raw
  To: Ramkumar Ramachandra; +Cc: Junio C Hamano, git, Christian Couder

Hi,

Ramkumar Ramachandra wrote:

> Have you seen my "libify reset" patch [1]?  I thought it was an easy candidate.

I don't think it is one, personally.  While it is good to get feedback
on such things early, that patch exposes some functions without making
the API much clearer and without any users to explain how they work in
practice.  I think it is best to let such patches cook in a private
branch until there is some obvious benefit to including them in git.

That benefit doesn't necessarily have to be new code using it --- it
could be increased clarity, faster compile times, decreasing the delta
with libgit2 so later fixes can be ported between the two more easily,
anything.  Though in this case, I'm guessing the motivation from your
end is the code that uses it, so that's an obvious choice.

I'd suggest sending it again for inclusion when the code that uses it
is ready, or for review whenever you have questions that the list can
answer.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: What's cooking in git.git (Jun 2011, #02; Sat, 11)
  2011-06-12 12:14 ` Ramkumar Ramachandra
  2011-06-13  0:17   ` "libify part of reset" mini-series (Re: What's cooking in git.git (Jun 2011, #02; Sat, 11)) Jonathan Nieder
@ 2011-06-13 13:16   ` Junio C Hamano
  1 sibling, 0 replies; 9+ messages in thread
From: Junio C Hamano @ 2011-06-13 13:16 UTC (permalink / raw
  To: Ramkumar Ramachandra; +Cc: git

Ramkumar Ramachandra <artagnon@gmail.com> writes:

> Have you seen my "libify reset" patch [1]?  I thought it was an easy candidate.

The reset-index-file part might be (but I agree with Jonathan that we can
wait until we need it), but the other one does not deserve to be called a
"libified" function if you look at it as an API function.

There are many places we show abbreviated commit object name and its title
with different frills around that message, but that particular function
does not help them unless the other callers want the same "HEAD is now at"
frill. Try this:

 $ git checkout HEAD^
 HEAD is now at 2cbd969... Git 1.7.6-rc1
 $ git checkout master
 Previous HEAD position was 2cbd969... Git 1.7.6-rc1
 Switched to branch 'master'

Your helper cannot even help produce "Previous HEAD position was", even
though I am reasonably sure they share the same logic. 

A helper whose signature is something like

    void pretty_print_commit(FILE *f, const char *fmt, struct commit *commit);

so that the caller can say

    pretty_print_commit(stdout, "HEAD is now at %h... %s\n", commit)

instead of "print_new_head(commit)", might be a good addition to the
"libified" helper set, but I suspect it is not worth it.

Look at how clearly and succinctly describe_detached_head() is implemented
in builtin/checkout.c

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: What's cooking in git.git (Jun 2011, #02; Sat, 11)
  2011-06-12 16:18 ` Sverre Rabbelier
@ 2011-06-13 15:25   ` Junio C Hamano
  2011-06-13 16:07     ` Sverre Rabbelier
  0 siblings, 1 reply; 9+ messages in thread
From: Junio C Hamano @ 2011-06-13 15:25 UTC (permalink / raw
  To: Sverre Rabbelier; +Cc: git

Sverre Rabbelier <srabbelier@gmail.com> writes:

> Note that I sent a reroll of this series (of which I'll send another
> version soon) which is a little more elegant in some places.

Yeah, I know about the series (didn't I have some comments in the
discussion thread?) and also I think I saw you talk about a re-roll during
the discussion before I wrote the What's cooking summary you are
responding to, which is why it does not appear in the list.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: What's cooking in git.git (Jun 2011, #02; Sat, 11)
  2011-06-13 15:25   ` Junio C Hamano
@ 2011-06-13 16:07     ` Sverre Rabbelier
  0 siblings, 0 replies; 9+ messages in thread
From: Sverre Rabbelier @ 2011-06-13 16:07 UTC (permalink / raw
  To: Junio C Hamano; +Cc: git

Heya,

On Mon, Jun 13, 2011 at 17:25, Junio C Hamano <gitster@pobox.com> wrote:
> Yeah, I know about the series (didn't I have some comments in the
> discussion thread?)

Yes you did, I'd forgotten, sorry about that.

> and also I think I saw you talk about a re-roll during
> the discussion before I wrote the What's cooking summary you are
> responding to, which is why it does not appear in the list.

Ok, :)

-- 
Cheers,

Sverre Rabbelier

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: What's cooking in git.git (Jun 2011, #02; Sat, 11)
  2011-06-12  6:49 What's cooking in git.git (Jun 2011, #02; Sat, 11) Junio C Hamano
  2011-06-12 12:14 ` Ramkumar Ramachandra
  2011-06-12 16:18 ` Sverre Rabbelier
@ 2011-06-14  4:27 ` Elijah Newren
  2011-06-16 21:05   ` Jeff King
  2 siblings, 1 reply; 9+ messages in thread
From: Elijah Newren @ 2011-06-14  4:27 UTC (permalink / raw
  To: Junio C Hamano; +Cc: git, Jeff King

Hi,

On Sun, Jun 12, 2011 at 12:49 AM, Junio C Hamano <gitster@pobox.com> wrote:
> Here are the topics that have been cooking.  Commits prefixed with '-' are
> only in 'pu' while commits prefixed with '+' are in 'next'.
>
> --------------------------------------------------
> [Stalled]
>
> * jk/maint-merge-rename-create (2011-03-25) 3 commits
>  - merge: turn on rewrite detection
>  - merge: handle renames with replacement content
>  - t3030: fix accidental success in symlink rename
>
> Peff wanted to reroll this. Perhaps will discard to make room for Elijah's
> merge-recursive series in the meantime.

Peff: Do you want any help rerolling, updating, reviewing, etc.?  I
don't want to cause any undue problems with my merge-recursive series,
and besides, the idea you have in this series looks like it may be
interesting.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: What's cooking in git.git (Jun 2011, #02; Sat, 11)
  2011-06-14  4:27 ` Elijah Newren
@ 2011-06-16 21:05   ` Jeff King
  0 siblings, 0 replies; 9+ messages in thread
From: Jeff King @ 2011-06-16 21:05 UTC (permalink / raw
  To: Elijah Newren; +Cc: Jay Soffian, Junio C Hamano, git

On Mon, Jun 13, 2011 at 10:27:50PM -0600, Elijah Newren wrote:

> On Sun, Jun 12, 2011 at 12:49 AM, Junio C Hamano <gitster@pobox.com> wrote:
> > Here are the topics that have been cooking.  Commits prefixed with '-' are
> > only in 'pu' while commits prefixed with '+' are in 'next'.
> >
> > --------------------------------------------------
> > [Stalled]
> >
> > * jk/maint-merge-rename-create (2011-03-25) 3 commits
> >  - merge: turn on rewrite detection
> >  - merge: handle renames with replacement content
> >  - t3030: fix accidental success in symlink rename
> >
> > Peff wanted to reroll this. Perhaps will discard to make room for Elijah's
> > merge-recursive series in the meantime.
> 
> Peff: Do you want any help rerolling, updating, reviewing, etc.?  I
> don't want to cause any undue problems with my merge-recursive series,
> and besides, the idea you have in this series looks like it may be
> interesting.

Thanks. The sticking point in my series that there is a weird regression
it introduces, and I haven't quite figured out the cause.

I'm cc'ing Jay Soffian, who found it. You can reproduce with this recipe
(sorry, the chromium repo is huge, but I don't have a smaller test case
yet):

  git clone http://git.chromium.org/git/chromium.git &&
  cd chromium &&
  git config merge.renameLimit 0 &&
  git checkout 0f6d00c &&
  git cherry-pick d7081a74

Looking at d7081a74, you can see that it's a tiny commit, and in fact it
should cherry-pick just fine. But due to the 3-way merge that
cherry-pick does, we still end up considering a lot of renames between
the merge base (d7081a74^) and 0f6d00c. Which is fine and correct, of
course, but makes the merge a lot more complex than it would at first
appear.

With git v1.7.5.3, it works just fine. With my patches on top, it
reliably fails the merge (even though there were no conflicts!), and
leaves a ton of crufty temporary files in the working directory.

Bumping up the merge verbosity, it does report a bunch of rename/add
conflicts. Which are totally bogus, of course. Here's what I wrote
earlier to Jay:

   The final patch turned on break detection. The patch before it fixed
   the "source" case: when the source of a rename comes from something
   besides empty (because the source is a broken pair), we need to merge
   properly and not just delete. But I never did the "dest" case, in
   which merge-recursive assumes that renamed content started as empty.

   And that's why you see the bogus "rename/add" conflict, I think. It's
   assuming the file came from nowhere, but it came from a break pair.
   So the good news is I think I can come up with a simple test case,
   and the fix is probably something like comparing against the ancestor
   sha1 instead of the null sha1.

But then I got sidetracked, and as you probably know from working on
merge-recursive, it's some pretty hairy code. Every time I start to look
at it I get confused and can't remember what breakthrough I thought I
was close to making before. :)

If you have any input, I'd appreciate it.

-Peff

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2011-06-16 21:06 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-06-12  6:49 What's cooking in git.git (Jun 2011, #02; Sat, 11) Junio C Hamano
2011-06-12 12:14 ` Ramkumar Ramachandra
2011-06-13  0:17   ` "libify part of reset" mini-series (Re: What's cooking in git.git (Jun 2011, #02; Sat, 11)) Jonathan Nieder
2011-06-13 13:16   ` What's cooking in git.git (Jun 2011, #02; Sat, 11) Junio C Hamano
2011-06-12 16:18 ` Sverre Rabbelier
2011-06-13 15:25   ` Junio C Hamano
2011-06-13 16:07     ` Sverre Rabbelier
2011-06-14  4:27 ` Elijah Newren
2011-06-16 21:05   ` Jeff King

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).