* What's cooking in git.git (Jan 2013, #06; Mon, 14)
@ 2013-01-14 22:23 Junio C Hamano
2013-01-15 3:02 ` Junio C Hamano
2013-01-16 1:34 ` Adam Spiers
0 siblings, 2 replies; 9+ messages in thread
From: Junio C Hamano @ 2013-01-14 22:23 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.
As usual, this cycle is expected to last for 8 to 10 weeks, with a
preview -rc0 sometime in the middle of next month.
You can find the changes described here in the integration branches of the
repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[New Topics]
* jc/cvsimport-upgrade (2013-01-14) 8 commits
- t9600: adjust for new cvsimport
- t9600: further prepare for sharing
- cvsimport-3: add a sample test
- cvsimport: make tests reusable for cvsimport-3
- cvsimport: start adding cvsps 3.x support
- cvsimport: introduce a version-switch wrapper
- cvsimport: allow setting a custom cvsps (2.x) program name
- Makefile: add description on PERL/PYTHON_PATH
The most important part of this series is the addition of the new
cvsimport by Eric Raymond that works with cvsps 3.x. Given some
distros have inertia to be conservative, Git with cvsimport that
does not work with both 3.x will block adoption of cvsps 3.x by
them, and shipping Git with cvsimport that does not work with cvsps
2.x will block such a version of Git, so we'll do the proven "both
old and new are available, but we aim to deprecate and remove the
old one in due time" strategy that we used successfully in the
past.
* as/pre-push-hook (2013-01-14) 3 commits
- Add sample pre-push hook script
- push: Add support for pre-push hooks
- hooks: Add function to check if a hook exists
Add an extra hook so that "git push" that is run without making
sure what is being pushed is sane can be checked and rejected (as
opposed to the user deciding not pushing).
* dl/am-hg-locale (2013-01-14) 1 commit
- am: invoke perl's strftime in C locale
Datestamp recorded in "Hg" format patch was reformatted incorrectly
to an e-mail looking date using locale dependant strftime, causing
patch application to fail.
* jk/config-parsing-cleanup (2013-01-14) 7 commits
- [DONTMERGE] reroll coming
- submodule: simplify memory handling in config parsing
- submodule: use match_config_key when parsing config
- userdiff: drop parse_driver function
- convert some config callbacks to match_config_key
- archive-tar: use match_config_key when parsing config
- config: add helper function for parsing key names
Expecting a reroll.
* mp/diff-algo-config (2013-01-14) 3 commits
- diff: Introduce --diff-algorithm command line option
- config: Introduce diff.algorithm variable
- git-completion.bash: Autocomplete --minimal and --histogram for git-diff
Add diff.algorithm configuration so that the user does not type
"diff --histogram".
Expecting a reroll.
* ph/rebase-preserve-all-merges (2013-01-14) 1 commit
- rebase --preserve-merges: keep all merge commits including empty ones
An earlier change to add --keep-empty option broke "git rebase
--preserve-merges" and lost merge commits that end up being the
same as its parent.
Will merge to 'next'.
* rs/archive-tar-config-parsing-fix (2013-01-14) 1 commit
- archive-tar: fix sanity check in config parsing
Configuration parsing for tar.* configuration variables were
broken; Peff's config parsing clean-up topic will address the same
breakage, so this may be superseded by that other topic.
* rs/pretty-use-prefixcmp (2013-01-14) 1 commit
- pretty: use prefixcmp instead of memcmp on NUL-terminated strings
Will merge to 'next'.
--------------------------------------------------
[Graduated to "master"]
* ap/status-ignored-in-ignored-directory (2013-01-07) 3 commits
(merged to 'next' on 2013-01-10 at 20f7476)
+ status: always report ignored tracked directories
(merged to 'next' on 2013-01-07 at 2a20b19)
+ git-status: Test --ignored behavior
+ dir.c: Make git-status --ignored more consistent
Output from "git status --ignored" showed an unexpected interaction
with "--untracked".
* fc/remote-testgit-feature-done (2012-10-29) 1 commit
(merged to 'next' on 2013-01-10 at 3132a60)
+ remote-testgit: properly check for errors
In the longer term, tightening rules is a good thing to do, and
because nobody who has worked in the remote helper area seems to be
interested in reviewing this, I would assume they do not think
such a retroactive tightening will affect their remote helpers. So
let's advance this topic to see what happens.
* jc/blame-no-follow (2012-09-21) 2 commits
(merged to 'next' on 2013-01-10 at 201c7f4)
+ blame: pay attention to --no-follow
+ diff: accept --no-follow option
Teaches "--no-follow" option to "git blame" to disable its
whole-file rename detection.
* jc/format-patch-reroll (2013-01-03) 9 commits
(merged to 'next' on 2013-01-07 at 0e007e6)
+ format-patch: give --reroll-count a short synonym -v
+ format-patch: document and test --reroll-count
+ format-patch: add --reroll-count=$N option
+ get_patch_filename(): split into two functions
+ get_patch_filename(): drop "just-numbers" hack
+ get_patch_filename(): simplify function signature
+ builtin/log.c: stop using global patch_suffix
+ builtin/log.c: drop redundant "numbered_files" parameter from make_cover_letter()
+ builtin/log.c: drop unused "numbered" parameter from make_cover_letter()
Originally merged to 'next' on 2013-01-04
Teach "format-patch" to prefix v4- to its output files for the
fourth iteration of a patch series, to make it easier for the
submitter to keep separate copies for iterations.
* jc/merge-blobs (2012-12-26) 5 commits
(merged to 'next' on 2013-01-08 at 582ca38)
+ merge-tree: fix d/f conflicts
+ merge-tree: add comments to clarify what these functions are doing
+ merge-tree: lose unused "resolve_directories"
+ merge-tree: lose unused "flags" from merge_list
+ Which merge_file() function do you mean?
Update the disused merge-tree proof-of-concept code.
* jk/maint-fast-import-doc-reorder (2013-01-09) 2 commits
(merged to 'next' on 2013-01-10 at 9f3950d)
+ git-fast-import(1): reorganise options
+ git-fast-import(1): combine documentation of --[no-]relative-marks
* jk/shortlog-no-wrap-doc (2013-01-09) 1 commit
(merged to 'next' on 2013-01-10 at c79898a)
+ git-shortlog(1): document behaviour of zero-width wrap
* jk/unify-exit-code-by-receiving-signal (2013-01-06) 1 commit
(merged to 'next' on 2013-01-08 at 5ebf940)
+ run-command: encode signal death as a positive integer
The internal logic had to deal with two representations of a death
of a child process by a signal.
* jn/xml-depends-on-asciidoc-conf (2013-01-06) 1 commit
(merged to 'next' on 2013-01-08 at 4faf8d4)
+ docs: manpage XML depends on asciidoc.conf
* nd/upload-pack-shallow-must-be-commit (2013-01-08) 1 commit
(merged to 'next' on 2013-01-10 at a8b3ba5)
+ upload-pack: only accept commits from "shallow" line
A minor consistency check patch that does not have much relevance
to the real world.
* nz/send-email-headers-are-case-insensitive (2013-01-06) 1 commit
(merged to 'next' on 2013-01-10 at cf4c9c9)
+ git-send-email: treat field names as case-insensitively
When user spells "cc:" in lowercase in the fake "header" in the
trailer part, send-email failed to pick up the addresses from
there. As e-mail headers field names are case insensitive, this
script should follow suit and treat "cc:" and "Cc:" the same way.
* rs/zip-tests (2013-01-07) 4 commits
(merged to 'next' on 2013-01-08 at 8e37423)
+ t5003: check if unzip supports symlinks
+ t5000, t5003: move ZIP tests into their own script
+ t0024, t5000: use test_lazy_prereq for UNZIP
+ t0024, t5000: clear variable UNZIP, use GIT_UNZIP instead
Updates zip tests to skip some that cannot be handled on platform
unzip.
* rs/zip-with-uncompressed-size-in-the-header (2013-01-06) 1 commit
(merged to 'next' on 2013-01-08 at d9ec30e)
+ archive-zip: write uncompressed size into header even with streaming
Improve compatibility of our zip output to fill uncompressed size
in the header, which we can do without seeking back (even though it
should not be necessary).
--------------------------------------------------
[Stalled]
* mp/complete-paths (2013-01-11) 1 commit
- git-completion.bash: add support for path completion
The completion script used to let the default completer to suggest
pathnames, which gave too many irrelevant choices (e.g. "git add"
would not want to add an unmodified path). Teach it to use a more
git-aware logic to enumerate only relevant ones.
Waiting for area-experts' help and review.
* jl/submodule-deinit (2012-12-04) 1 commit
- submodule: add 'deinit' command
There was no Porcelain way to say "I no longer am interested in
this submodule", once you express your interest in a submodule with
"submodule init". "submodule deinit" is the way to do so.
Expecting a reroll.
$gmane/212884
* jk/lua-hackery (2012-10-07) 6 commits
- pretty: fix up one-off format_commit_message calls
- Minimum compilation fixup
- Makefile: make "lua" a bit more configurable
- add a "lua" pretty format
- add basic lua infrastructure
- pretty: make some commit-parsing helpers more public
Interesting exercise. When we do this for real, we probably would want
to wrap a commit to make it more like an "object" with methods like
"parents", etc.
* rc/maint-complete-git-p4 (2012-09-24) 1 commit
- Teach git-completion about git p4
Comment from Pete will need to be addressed ($gmane/206172).
* jc/maint-name-rev (2012-09-17) 7 commits
- describe --contains: use "name-rev --algorithm=weight"
- name-rev --algorithm=weight: tests and documentation
- name-rev --algorithm=weight: cache the computed weight in notes
- name-rev --algorithm=weight: trivial optimization
- name-rev: --algorithm option
- name_rev: clarify the logic to assign a new tip-name to a commit
- name-rev: lose unnecessary typedef
"git name-rev" names the given revision based on a ref that can be
reached in the smallest number of steps from the rev, but that is
not useful when the caller wants to know which tag is the oldest one
that contains the rev. This teaches a new mode to the command that
uses the oldest ref among those which contain the rev.
I am not sure if this is worth it; for one thing, even with the help
from notes-cache, it seems to make the "describe --contains" even
slower. Also the command will be unusably slow for a user who does
not have a write access (hence unable to create or update the
notes-cache).
Stalled mostly due to lack of responses.
* jc/xprm-generation (2012-09-14) 1 commit
- test-generation: compute generation numbers and clock skews
A toy to analyze how bad the clock skews are in histories of real
world projects.
Stalled mostly due to lack of responses.
* jc/add-delete-default (2012-08-13) 1 commit
- git add: notice removal of tracked paths by default
"git add dir/" updated modified files and added new files, but does
not notice removed files, which may be "Huh?" to some users. They
can of course use "git add -A dir/", but why should they?
Resurrected from graveyard, as I thought it was a worthwhile thing
to do in the longer term.
Stalled mostly due to lack of responses.
* mb/remote-default-nn-origin (2012-07-11) 6 commits
- Teach get_default_remote to respect remote.default.
- Test that plain "git fetch" uses remote.default when on a detached HEAD.
- Teach clone to set remote.default.
- Teach "git remote" about remote.default.
- Teach remote.c about the remote.default configuration setting.
- Rename remote.c's default_remote_name static variables.
When the user does not specify what remote to interact with, we
often attempt to use 'origin'. This can now be customized via a
configuration variable.
Expecting a reroll.
$gmane/210151
"The first remote becomes the default" bit is better done as a
separate step.
--------------------------------------------------
[Cooking]
* rt/commit-cleanup-config (2013-01-10) 1 commit
- commit: make default of "cleanup" option configurable
Add a configuration variable to set default clean-up mode other
than "strip".
Will merge to 'next'.
* jc/custom-comment-char (2013-01-10) 1 commit
- Allow custom "comment char"
An illustration to show codepaths that need to be touched to change
the hint lines in the edited text to begin with something other
than '#'.
* jn/maint-trim-vim-contrib (2013-01-10) 1 commit
- contrib/vim: simplify instructions for old vim support
Will merge to 'next'.
* mz/reset-misc (2013-01-10) 22 commits
- reset [--mixed]: use diff-based reset whether or not pathspec was given
- [SQUASH???] script portability fixes
- reset: allow reset on unborn branch
- reset $sha1 $pathspec: require $sha1 only to be treeish
- reset [--mixed] --quiet: don't refresh index
- reset.c: finish entire cmd_reset() whether or not pathspec is given
- reset [--mixed]: don't write index file twice
- reset.c: move lock, write and commit out of update_index_refresh()
- reset.c: move update_index_refresh() call out of read_from_tree()
- reset: avoid redundant error message
- reset --keep: only write index file once
- reset.c: replace switch by if-else
- reset.c: share call to die_if_unmerged_cache()
- [SQUASH???] style fixes
- reset.c: extract function for updating {ORIG,}HEAD
- reset.c: remove unnecessary variable 'i'
- [SQUASH???] style fix
- reset.c: extract function for parsing arguments
- reset: don't allow "git reset -- $pathspec" in bare repo
- reset.c: pass pathspec around instead of (prefix, argv) pair
- reset $pathspec: exit with code 0 if successful
- reset $pathspec: no need to discard index
Various 'reset' optimizations and clean-ups, followed by a change
to allow "git reset" to work even on an unborn branch.
* pe/doc-email-env-is-trumped-by-config (2013-01-10) 1 commit
(merged to 'next' on 2013-01-14 at 6b4d555)
+ git-commit-tree(1): correct description of defaults
In the precedence order, the environment variable $EMAIL comes
between the built-in default (i.e. taking value by asking the
system's gethostname() etc.) and the user.email configuration
variable; the documentation implied that it is stronger than the
configuration like $GIT_COMMITTER_EMAIL is, which is wrong.
* ds/completion-silence-in-tree-path-probe (2013-01-11) 1 commit
- git-completion.bash: silence "not a valid object" errors
An internal ls-tree call made by completion code only to probe if
a path exists in the tree recorded in a commit object leaked error
messages when the path is not there. It is not an error at all and
should not be shown to the end user.
Will merge to 'next'.
* nd/fetch-depth-is-broken (2013-01-11) 3 commits
- fetch: elaborate --depth action
- upload-pack: fix off-by-one depth calculation in shallow clone
- fetch: add --unshallow for turning shallow repo into complete one
"git fetch --depth" was broken in at least three ways. The
resulting history was deeper than specified by one commit, it was
unclear how to wipe the shallowness of the repository with the
command, and documentation was misleading.
Will merge to 'next'.
* jc/no-git-config-in-clone (2013-01-11) 1 commit
- clone: do not export and unexport GIT_CONFIG
We stopped paying attention to $GIT_CONFIG environment that points
at a single configuration file from any command other than "git config"
quite a while ago, but "git clone" internally set, exported, and
then unexported the variable during its operation unnecessarily.
* mk/complete-tcsh (2013-01-07) 1 commit
(merged to 'next' on 2013-01-11 at b8b30b1)
+ Prevent space after directories in tcsh completion
Update tcsh command line completion so that an unwanted space is
not added to a single directory name.
* dg/subtree-fixes (2013-01-08) 7 commits
- contrib/subtree: mkdir the manual directory if needed
- contrib/subtree: honor $(DESTDIR)
- contrib/subtree: fix synopsis and command help
- contrib/subtree: better error handling for "add"
- contrib/subtree: add --unannotate option
- contrib/subtree: use %B for split Subject/Body
- t7900: remove test number comments
contrib/subtree updates.
Rerolled?
* ap/log-mailmap (2013-01-10) 11 commits
(merged to 'next' on 2013-01-10 at 8544084)
+ log --use-mailmap: optimize for cases without --author/--committer search
+ log: add log.mailmap configuration option
+ log: grep author/committer using mailmap
+ test: add test for --use-mailmap option
+ log: add --use-mailmap option
+ pretty: use mailmap to display username and email
+ mailmap: add mailmap structure to rev_info and pp
+ mailmap: simplify map_user() interface
+ mailmap: remove email copy and length limitation
+ Use split_ident_line to parse author and committer
+ string-list: allow case-insensitive string list
Teach commands in the "log" family to optionally pay attention to
the mailmap.
* jc/push-2.0-default-to-simple (2013-01-08) 11 commits
(merged to 'next' on 2013-01-09 at 74c3498)
+ doc: push.default is no longer "matching"
+ push: switch default from "matching" to "simple"
+ t9401: do not assume the "matching" push is the default
+ t9400: do not assume the "matching" push is the default
+ t7406: do not assume the "matching" push is the default
+ t5531: do not assume the "matching" push is the default
+ t5519: do not assume the "matching" push is the default
+ t5517: do not assume the "matching" push is the default
+ t5516: do not assume the "matching" push is the default
+ t5505: do not assume the "matching" push is the default
+ t5404: do not assume the "matching" push is the default
Will cook in 'next' until Git 2.0 ;-).
* nd/clone-no-separate-git-dir-with-bare (2013-01-10) 1 commit
- clone: forbid --bare --separate-git-dir <dir>
Will merge to 'next'.
* nd/parse-pathspec (2013-01-11) 20 commits
. Convert more init_pathspec() to parse_pathspec()
. Convert add_files_to_cache to take struct pathspec
. Convert {read,fill}_directory to take struct pathspec
. Convert refresh_index to take struct pathspec
. Convert report_path_error to take struct pathspec
. checkout: convert read_tree_some to take struct pathspec
. Convert unmerge_cache to take struct pathspec
. Convert read_cache_preload() to take struct pathspec
. add: convert to use parse_pathspec
. archive: convert to use parse_pathspec
. ls-files: convert to use parse_pathspec
. rm: convert to use parse_pathspec
. checkout: convert to use parse_pathspec
. rerere: convert to use parse_pathspec
. status: convert to use parse_pathspec
. commit: convert to use parse_pathspec
. clean: convert to use parse_pathspec
. Export parse_pathspec() and convert some get_pathspec() calls
. Add parse_pathspec() that converts cmdline args to struct pathspec
. pathspec: save the non-wildcard length part
Uses the parsed pathspec structure in more places where we used to
use the raw "array of strings" pathspec.
Ejected from 'pu' for now; will take a look at the rerolled one
later ($gmane/213340).
* jc/doc-maintainer (2013-01-03) 2 commits
(merged to 'next' on 2013-01-11 at f35d582)
+ howto/maintain: mark titles for asciidoc
+ Documentation: update "howto maintain git"
Describe tools for automation that were invented since this
document was originally written.
* mo/cvs-server-updates (2012-12-09) 18 commits
(merged to 'next' on 2013-01-08 at 75e2d11)
+ t9402: Use TABs for indentation
+ t9402: Rename check.cvsCount and check.list
+ t9402: Simplify git ls-tree
+ t9402: Add missing &&; Code style
+ t9402: No space after IO-redirection
+ t9402: Dont use test_must_fail cvs
+ t9402: improve check_end_tree() and check_end_full_tree()
+ t9402: sed -i is not portable
+ cvsserver Documentation: new cvs ... -r support
+ cvsserver: add t9402 to test branch and tag refs
+ cvsserver: support -r and sticky tags for most operations
+ cvsserver: Add version awareness to argsfromdir
+ cvsserver: generalize getmeta() to recognize commit refs
+ cvsserver: implement req_Sticky and related utilities
+ cvsserver: add misc commit lookup, file meta data, and file listing functions
+ cvsserver: define a tag name character escape mechanism
+ cvsserver: cleanup extra slashes in filename arguments
+ cvsserver: factor out git-log parsing logic
Various git-cvsserver updates.
Will cook in 'next' for a while to see if anybody screams.
* as/check-ignore (2013-01-10) 12 commits
(merged to 'next' on 2013-01-14 at 9df2afc)
+ t0008: avoid brace expansion
+ add git-check-ignore sub-command
+ setup.c: document get_pathspec()
+ add.c: extract new die_if_path_beyond_symlink() for reuse
+ add.c: extract check_path_for_gitlink() from treat_gitlinks() for reuse
+ pathspec.c: rename newly public functions for clarity
+ add.c: move pathspec matchers into new pathspec.c for reuse
+ add.c: remove unused argument from validate_pathspec()
+ dir.c: improve docs for match_pathspec() and match_pathspec_depth()
+ dir.c: provide clear_directory() for reclaiming dir_struct memory
+ dir.c: keep track of where patterns came from
+ dir.c: use a single struct exclude_list per source of excludes
Add a new command "git check-ignore" for debugging .gitignore
files.
* nd/retire-fnmatch (2013-01-01) 7 commits
(merged to 'next' on 2013-01-07 at ab31f9b)
+ Makefile: add USE_WILDMATCH to use wildmatch as fnmatch
+ wildmatch: advance faster in <asterisk> + <literal> patterns
+ wildmatch: make a special case for "*/" with FNM_PATHNAME
+ test-wildmatch: add "perf" command to compare wildmatch and fnmatch
+ wildmatch: support "no FNM_PATHNAME" mode
+ wildmatch: make dowild() take arbitrary flags
+ wildmatch: rename constants and update prototype
Originally merged to 'next' on 2013-01-04
Replace our use of fnmatch(3) with a more feature-rich wildmatch.
A handful patches at the bottom have been moved to nd/wildmatch to
graduate as part of that branch, before this series solidifies.
Will cook in 'next' a bit longer than other topics.
* mb/gitweb-highlight-link-target (2012-12-20) 1 commit
- Highlight the link target line in Gitweb using CSS
Expecting a reroll.
$gmane/211935
* zk/clean-report-failure (2013-01-14) 1 commit
- git-clean: Display more accurate delete messages
"git clean" states what it is going to remove and then goes on to
remove it, but sometimes it only discovers things that cannot be
removed after recursing into a directory, which makes the output
confusing and even wrong.
Will merge to 'next'.
* bc/append-signed-off-by (2013-01-01) 12 commits
- t4014: do not use echo -n
- Unify appending signoff in format-patch, commit and sequencer
- format-patch: update append_signoff prototype
- format-patch: stricter S-o-b detection
- t4014: more tests about appending s-o-b lines
- sequencer.c: teach append_signoff to avoid adding a duplicate newline
- sequencer.c: teach append_signoff how to detect duplicate s-o-b
- sequencer.c: always separate "(cherry picked from" from commit body
- sequencer.c: recognize "(cherry picked from ..." as part of s-o-b footer
- t/t3511: add some tests of 'cherry-pick -s' functionality
- t/test-lib-functions.sh: allow to specify the tag name to test_commit
- sequencer.c: remove broken support for rfc2822 continuation in footer
Expecting a reroll.
$gmane/212507
* er/replace-cvsimport (2013-01-12) 7 commits
. t/lib-cvs: cvsimport no longer works without Python >= 2.7
. t9605: test for cvsps commit ordering bug
. t9604: fixup for new cvsimport
. t9600: fixup for new cvsimport
. t/lib-cvs.sh: allow cvsps version 3.x.
. t/t960[123]: remove leftover scripts
. cvsimport: rewrite to use cvsps 3.x to fix major bugs
Rerolled as jc/cvsimport-upgrade and ejected from 'pu'.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: What's cooking in git.git (Jan 2013, #06; Mon, 14)
2013-01-14 22:23 What's cooking in git.git (Jan 2013, #06; Mon, 14) Junio C Hamano
@ 2013-01-15 3:02 ` Junio C Hamano
2013-01-15 6:10 ` Chris Rorvick
2013-01-16 1:34 ` Adam Spiers
1 sibling, 1 reply; 9+ messages in thread
From: Junio C Hamano @ 2013-01-15 3:02 UTC (permalink / raw)
To: Eric S. Raymond, Chris Rorvick; +Cc: git, Michael Haggerty, Jonathan Nieder
Junio C Hamano <gitster@pobox.com> writes:
> [New Topics]
>
> * jc/cvsimport-upgrade (2013-01-14) 8 commits
> - t9600: adjust for new cvsimport
> - t9600: further prepare for sharing
> - cvsimport-3: add a sample test
> - cvsimport: make tests reusable for cvsimport-3
> - cvsimport: start adding cvsps 3.x support
> - cvsimport: introduce a version-switch wrapper
> - cvsimport: allow setting a custom cvsps (2.x) program name
> - Makefile: add description on PERL/PYTHON_PATH
>
> The most important part of this series is the addition of the new
> cvsimport by Eric Raymond that works with cvsps 3.x. Given some
> distros have inertia to be conservative, Git with cvsimport that
> does not work with both 3.x will block adoption of cvsps 3.x by
> them, and shipping Git with cvsimport that does not work with cvsps
> 2.x will block such a version of Git, so we'll do the proven "both
> old and new are available, but we aim to deprecate and remove the
> old one in due time" strategy that we used successfully in the
> past.
My reading of the review discussion of this series, and the
discussion in the $gmane/213170 thread, is that the approach
outlined in this series is something Git-side is comfortable working
with.
I personally think it will be slightly less work on your side to
keep the cvsps 3.x + new cvsimport combo improving, because you no
longer need to worry about punting to the old cvsimport. In
addition, I think the new layout would make it easier for the new
combo to gain trust of existing Git userbase over time by adding
more t965x series of tests that correspond to the tests in the t960x
series, working on the same (simple) CVS histories, demonstrating
that the result would be what users expect, and guarding the code
from future breakage. By giving options to pick and choose both old
and new cvsps, I think it will make it easier for distros to include
cvsps 3.x sooner, promoting its adoption, which will in turn benefit
us.
I converted one of Chris's follow-up test tweaks to this to
illustrate how it can be done without breaking tests for the
original cvsimport, but didn't do all of them. Chris, is this a
foundation we can work together on top?
Even though I assigned Author: to the "start adding cvsps 3" patch,
I forgot to forge Eric's sign-off to it. If Eric is OK with the
direction this series is going, I'll do so and advance the rerolled
series to 'next'.
Thanks.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: What's cooking in git.git (Jan 2013, #06; Mon, 14)
2013-01-15 3:02 ` Junio C Hamano
@ 2013-01-15 6:10 ` Chris Rorvick
0 siblings, 0 replies; 9+ messages in thread
From: Chris Rorvick @ 2013-01-15 6:10 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Eric S. Raymond, git, Michael Haggerty, Jonathan Nieder
On Mon, Jan 14, 2013 at 9:02 PM, Junio C Hamano <gitster@pobox.com> wrote:
> I converted one of Chris's follow-up test tweaks to this to
> illustrate how it can be done without breaking tests for the
> original cvsimport, but didn't do all of them. Chris, is this a
> foundation we can work together on top?
Sure, looks straightforward and makes things easier.
Thanks,
Chris
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: What's cooking in git.git (Jan 2013, #06; Mon, 14)
2013-01-14 22:23 What's cooking in git.git (Jan 2013, #06; Mon, 14) Junio C Hamano
2013-01-15 3:02 ` Junio C Hamano
@ 2013-01-16 1:34 ` Adam Spiers
2013-01-16 2:37 ` Junio C Hamano
1 sibling, 1 reply; 9+ messages in thread
From: Adam Spiers @ 2013-01-16 1:34 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
On Mon, Jan 14, 2013 at 10:23 PM, Junio C Hamano <gitster@pobox.com> wrote:
> * as/check-ignore (2013-01-10) 12 commits
> (merged to 'next' on 2013-01-14 at 9df2afc)
> + t0008: avoid brace expansion
> + add git-check-ignore sub-command
> + setup.c: document get_pathspec()
> + add.c: extract new die_if_path_beyond_symlink() for reuse
> + add.c: extract check_path_for_gitlink() from treat_gitlinks() for reuse
> + pathspec.c: rename newly public functions for clarity
> + add.c: move pathspec matchers into new pathspec.c for reuse
> + add.c: remove unused argument from validate_pathspec()
> + dir.c: improve docs for match_pathspec() and match_pathspec_depth()
> + dir.c: provide clear_directory() for reclaiming dir_struct memory
> + dir.c: keep track of where patterns came from
> + dir.c: use a single struct exclude_list per source of excludes
>
> Add a new command "git check-ignore" for debugging .gitignore
> files.
The above is v4 plus the "t0008: avoid brace expansion" fix. v4 is
slightly outdated and not quite the right version to merge to 'next'.
I'll post a v5 re-roll as per:
http://thread.gmane.org/gmane.comp.version-control.git/212184/focus=212856
in the next 24 hours or so.
I think the "t0008: avoid brace expansion" fix at the tip should
probably be squashed into its parent. I've amended the commit message
accordingly in my github fork.
Thanks,
Adam
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: What's cooking in git.git (Jan 2013, #06; Mon, 14)
2013-01-16 1:34 ` Adam Spiers
@ 2013-01-16 2:37 ` Junio C Hamano
2013-01-16 12:06 ` Adam Spiers
0 siblings, 1 reply; 9+ messages in thread
From: Junio C Hamano @ 2013-01-16 2:37 UTC (permalink / raw)
To: Adam Spiers; +Cc: git
Adam Spiers <git@adamspiers.org> writes:
> On Mon, Jan 14, 2013 at 10:23 PM, Junio C Hamano <gitster@pobox.com> wrote:
>> * as/check-ignore (2013-01-10) 12 commits
>> (merged to 'next' on 2013-01-14 at 9df2afc)
>> + t0008: avoid brace expansion
>> + add git-check-ignore sub-command
>> + setup.c: document get_pathspec()
>> + add.c: extract new die_if_path_beyond_symlink() for reuse
>> + add.c: extract check_path_for_gitlink() from treat_gitlinks() for reuse
>> + pathspec.c: rename newly public functions for clarity
>> + add.c: move pathspec matchers into new pathspec.c for reuse
>> + add.c: remove unused argument from validate_pathspec()
>> + dir.c: improve docs for match_pathspec() and match_pathspec_depth()
>> + dir.c: provide clear_directory() for reclaiming dir_struct memory
>> + dir.c: keep track of where patterns came from
>> + dir.c: use a single struct exclude_list per source of excludes
>>
>> Add a new command "git check-ignore" for debugging .gitignore
>> files.
>
> The above is v4 plus the "t0008: avoid brace expansion" fix. v4 is
> slightly outdated and not quite the right version to merge to 'next'.
Sigh.
The "What's cooking" is a report of what _has_ already happened. I
would have appreciated if you said the above _before_ this happened.
> I'll post a v5 re-roll as per:
Now the series is in 'next', it is too late to _replace_ it X-<.
Could you instead make an incremental updates on top? That way, we
do not have to re-review the whole thing; we only need to review the
changes relative to the old one, making sure that the fixes in the
updates are better than the v4 version.
Thanks.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: What's cooking in git.git (Jan 2013, #06; Mon, 14)
2013-01-16 2:37 ` Junio C Hamano
@ 2013-01-16 12:06 ` Adam Spiers
2013-01-16 13:25 ` [PATCH] clean.c, ls-files.c: respect encapsulation of exclude_list_groups Adam Spiers
0 siblings, 1 reply; 9+ messages in thread
From: Adam Spiers @ 2013-01-16 12:06 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
On Wed, Jan 16, 2013 at 2:37 AM, Junio C Hamano <gitster@pobox.com> wrote:
> Adam Spiers <git@adamspiers.org> writes:
>
>> On Mon, Jan 14, 2013 at 10:23 PM, Junio C Hamano <gitster@pobox.com> wrote:
>>> * as/check-ignore (2013-01-10) 12 commits
>>> (merged to 'next' on 2013-01-14 at 9df2afc)
>>> + t0008: avoid brace expansion
>>> + add git-check-ignore sub-command
>>> + setup.c: document get_pathspec()
>>> + add.c: extract new die_if_path_beyond_symlink() for reuse
>>> + add.c: extract check_path_for_gitlink() from treat_gitlinks() for reuse
>>> + pathspec.c: rename newly public functions for clarity
>>> + add.c: move pathspec matchers into new pathspec.c for reuse
>>> + add.c: remove unused argument from validate_pathspec()
>>> + dir.c: improve docs for match_pathspec() and match_pathspec_depth()
>>> + dir.c: provide clear_directory() for reclaiming dir_struct memory
>>> + dir.c: keep track of where patterns came from
>>> + dir.c: use a single struct exclude_list per source of excludes
>>>
>>> Add a new command "git check-ignore" for debugging .gitignore
>>> files.
>>
>> The above is v4 plus the "t0008: avoid brace expansion" fix. v4 is
>> slightly outdated and not quite the right version to merge to 'next'.
>
> Sigh.
>
> The "What's cooking" is a report of what _has_ already happened. I
> would have appreciated if you said the above _before_ this happened.
I did, 8 days ago in the link which you just trimmed from your reply:
http://thread.gmane.org/gmane.comp.version-control.git/212184/focus=212856
The additional issues with t0008 were discovered after I posted v4, as
reflected in last Wednesday's "What's cooking" (#04):
"The test it adds seems to break under dash.
Expecting a reroll or fixup."
I assumed that for brevity you had deliberately omitted mentioning the
outstanding dir.exclude_list_group[EXC_CMDL].el[0] encapsulation
issue linked above, so I thought we were aligned at this point.
However I see now that you changed the status to an intention to merge
this to 'next' in last Friday's "What's cooking" (#05). That gave me
a window of under 72 hours in which to reiterate the need for a final
re-roll. Unfortunately with other commitments and illness over the
weekend, I didn't catch this in time.
However, the damage is very small:
>> I'll post a v5 re-roll as per:
>
> Now the series is in 'next', it is too late to _replace_ it X-<.
> Could you instead make an incremental updates on top? That way, we
> do not have to re-review the whole thing; we only need to review the
> changes relative to the old one, making sure that the fixes in the
> updates are better than the v4 version.
Sure, that's easy to do. It'll be a single small patch very similar
to this one:
http://article.gmane.org/gmane.comp.version-control.git/212852
minus the superfluous printf() debug statements. I'll do that now.
Thanks,
Adam
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH] clean.c, ls-files.c: respect encapsulation of exclude_list_groups
2013-01-16 12:06 ` Adam Spiers
@ 2013-01-16 13:25 ` Adam Spiers
2013-01-16 17:43 ` Junio C Hamano
2013-01-16 22:20 ` Junio C Hamano
0 siblings, 2 replies; 9+ messages in thread
From: Adam Spiers @ 2013-01-16 13:25 UTC (permalink / raw)
To: git list
Consumers of the dir.c traversal API should avoid assuming knowledge
of the internal implementation of exclude_list_groups. Therefore
when adding items to an exclude list, it should be accessed via the
pointer returned from add_exclude_list(), rather than by referencing
a location within dir.exclude_list_groups[EXC_CMDL].
Signed-off-by: Adam Spiers <git@adamspiers.org>
---
builtin/clean.c | 6 +++---
builtin/ls-files.c | 15 ++++++++++-----
2 files changed, 13 insertions(+), 8 deletions(-)
diff --git a/builtin/clean.c b/builtin/clean.c
index b098288..b9cb7ad 100644
--- a/builtin/clean.c
+++ b/builtin/clean.c
@@ -45,6 +45,7 @@ int cmd_clean(int argc, const char **argv, const char *prefix)
static const char **pathspec;
struct strbuf buf = STRBUF_INIT;
struct string_list exclude_list = STRING_LIST_INIT_NODUP;
+ struct exclude_list *el;
const char *qname;
char *seen = NULL;
struct option options[] = {
@@ -97,10 +98,9 @@ int cmd_clean(int argc, const char **argv, const char *prefix)
if (!ignored)
setup_standard_excludes(&dir);
- add_exclude_list(&dir, EXC_CMDL, "--exclude option");
+ el = add_exclude_list(&dir, EXC_CMDL, "--exclude option");
for (i = 0; i < exclude_list.nr; i++)
- add_exclude(exclude_list.items[i].string, "", 0,
- &dir.exclude_list_group[EXC_CMDL].el[0], -(i+1));
+ add_exclude(exclude_list.items[i].string, "", 0, el, -(i+1));
pathspec = get_pathspec(prefix, argv);
diff --git a/builtin/ls-files.c b/builtin/ls-files.c
index fa9ccb8..b4d8b01 100644
--- a/builtin/ls-files.c
+++ b/builtin/ls-files.c
@@ -421,10 +421,10 @@ static int option_parse_z(const struct option *opt,
static int option_parse_exclude(const struct option *opt,
const char *arg, int unset)
{
- struct exclude_list_group *group = opt->value;
+ struct string_list *exclude_list = opt->value;
exc_given = 1;
- add_exclude(arg, "", 0, &group->el[0], --exclude_args);
+ string_list_append(exclude_list, arg);
return 0;
}
@@ -453,9 +453,11 @@ static int option_parse_exclude_standard(const struct option *opt,
int cmd_ls_files(int argc, const char **argv, const char *cmd_prefix)
{
- int require_work_tree = 0, show_tag = 0;
+ int require_work_tree = 0, show_tag = 0, i;
const char *max_prefix;
struct dir_struct dir;
+ struct exclude_list *el;
+ struct string_list exclude_list = STRING_LIST_INIT_NODUP;
struct option builtin_ls_files_options[] = {
{ OPTION_CALLBACK, 'z', NULL, NULL, NULL,
"paths are separated with NUL character",
@@ -490,7 +492,7 @@ int cmd_ls_files(int argc, const char **argv, const char *cmd_prefix)
OPT_BOOLEAN(0, "resolve-undo", &show_resolve_undo,
"show resolve-undo information"),
{ OPTION_CALLBACK, 'x', "exclude",
- &dir.exclude_list_group[EXC_CMDL], "pattern",
+ &exclude_list, "pattern",
"skip files matching pattern",
0, option_parse_exclude },
{ OPTION_CALLBACK, 'X', "exclude-from", &dir, "file",
@@ -525,9 +527,12 @@ int cmd_ls_files(int argc, const char **argv, const char *cmd_prefix)
if (read_cache() < 0)
die("index file corrupt");
- add_exclude_list(&dir, EXC_CMDL, "--exclude option");
argc = parse_options(argc, argv, prefix, builtin_ls_files_options,
ls_files_usage, 0);
+ el = add_exclude_list(&dir, EXC_CMDL, "--exclude option");
+ for (i = 0; i < exclude_list.nr; i++) {
+ add_exclude(exclude_list.items[i].string, "", 0, el, --exclude_args);
+ }
if (show_tag || show_valid_bit) {
tag_cached = "H ";
tag_unmerged = "M ";
--
1.8.1.291.g0730ed6
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH] clean.c, ls-files.c: respect encapsulation of exclude_list_groups
2013-01-16 13:25 ` [PATCH] clean.c, ls-files.c: respect encapsulation of exclude_list_groups Adam Spiers
@ 2013-01-16 17:43 ` Junio C Hamano
2013-01-16 22:20 ` Junio C Hamano
1 sibling, 0 replies; 9+ messages in thread
From: Junio C Hamano @ 2013-01-16 17:43 UTC (permalink / raw)
To: Adam Spiers; +Cc: git list
Adam Spiers <git@adamspiers.org> writes:
> Consumers of the dir.c traversal API should avoid assuming knowledge
> of the internal implementation of exclude_list_groups. Therefore
> when adding items to an exclude list, it should be accessed via the
> pointer returned from add_exclude_list(), rather than by referencing
> a location within dir.exclude_list_groups[EXC_CMDL].
Sounds sensible.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] clean.c, ls-files.c: respect encapsulation of exclude_list_groups
2013-01-16 13:25 ` [PATCH] clean.c, ls-files.c: respect encapsulation of exclude_list_groups Adam Spiers
2013-01-16 17:43 ` Junio C Hamano
@ 2013-01-16 22:20 ` Junio C Hamano
1 sibling, 0 replies; 9+ messages in thread
From: Junio C Hamano @ 2013-01-16 22:20 UTC (permalink / raw)
To: Adam Spiers; +Cc: git list
Adam Spiers <git@adamspiers.org> writes:
> Consumers of the dir.c traversal API should avoid assuming knowledge
> of the internal implementation of exclude_list_groups. Therefore
> when adding items to an exclude list, it should be accessed via the
> pointer returned from add_exclude_list(), rather than by referencing
> a location within dir.exclude_list_groups[EXC_CMDL].
>
> Signed-off-by: Adam Spiers <git@adamspiers.org>
> ---
> builtin/clean.c | 6 +++---
> builtin/ls-files.c | 15 ++++++++++-----
> 2 files changed, 13 insertions(+), 8 deletions(-)
>
> diff --git a/builtin/clean.c b/builtin/clean.c
> index b098288..b9cb7ad 100644
> --- a/builtin/clean.c
> +++ b/builtin/clean.c
> @@ -45,6 +45,7 @@ int cmd_clean(int argc, const char **argv, const char *prefix)
> static const char **pathspec;
> struct strbuf buf = STRBUF_INIT;
> struct string_list exclude_list = STRING_LIST_INIT_NODUP;
> + struct exclude_list *el;
When a type "exclude_list" exists and used in the same function,
having a local variable of the same name but of a different type
becomes a bit awkward.
builtin/ls-files.c shares the same structure. Does the file-scope
"exclude_args" variable need to be a file-scope static over there?
It seems that it is closely tied to the elements of the string list,
so it may make sense to:
* remove the file-scope static "exclude_args";
* rename "exclude_list" string list variable to "exclude_args";
and
* replace "--exclude_args" in the loop that iterates over
exclude_list (now exclude_args) with "-(i+1)" or something,
just like you do in "builtin/clean.c" below.
> - add_exclude_list(&dir, EXC_CMDL, "--exclude option");
> + el = add_exclude_list(&dir, EXC_CMDL, "--exclude option");
> for (i = 0; i < exclude_list.nr; i++)
> - add_exclude(exclude_list.items[i].string, "", 0,
> - &dir.exclude_list_group[EXC_CMDL].el[0], -(i+1));
> + add_exclude(exclude_list.items[i].string, "", 0, el, -(i+1));
We may want to use for_each_string_list_item() here and in the
corresponding loop in builtin/ls-files.c, but because we do need to
give the -(i + 1) label to each element, I think the code is OK
as-is.
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2013-01-16 22:20 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-01-14 22:23 What's cooking in git.git (Jan 2013, #06; Mon, 14) Junio C Hamano
2013-01-15 3:02 ` Junio C Hamano
2013-01-15 6:10 ` Chris Rorvick
2013-01-16 1:34 ` Adam Spiers
2013-01-16 2:37 ` Junio C Hamano
2013-01-16 12:06 ` Adam Spiers
2013-01-16 13:25 ` [PATCH] clean.c, ls-files.c: respect encapsulation of exclude_list_groups Adam Spiers
2013-01-16 17:43 ` Junio C Hamano
2013-01-16 22:20 ` Junio C Hamano
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).