* Re: Feature suggestion: new 'git add -i' command to discard working copy changes
From: Jeff King @ 2012-12-18 22:20 UTC (permalink / raw)
To: Evan Driscoll; +Cc: Junio C Hamano, git
In-Reply-To: <50D0E9DA.1020408@cs.wisc.edu>
On Tue, Dec 18, 2012 at 04:10:34PM -0600, Evan Driscoll wrote:
> I have two use cases of 'add -i'. The more common one is if I kind of
> want -p but don't want to do it for every file. (I guess in part this is
> my way of substituting for not knowing all the actions during -p as
> well.) But I sometimes use it if I want to stage several but not all
> files, as it's often faster for me to just choose the files I want from
> the interactive add's list than it is for me to type each of the files
> that I want (even with tab completion) -- I'm often working in a project
> with unfortunately-deep paths.
>
> What I want for my 'discard' action is more like the latter: I'd like a
> fast way to choose a file(s) to discard without having to type the path(s).
That makes sense.
> Maybe I should just investigate tig or another front end; that might
> satisfy my desire.
Yes, "tig status" will do this (use "!" to revert changes to the path).
Another trick is to stage what you want and throw away the rest, like:
$ hack hack hack
$ git add -i ;# now everything unstaged is garbage
$ git checkout .
$ test test test
$ git commit
Of course that implies that you can separate the wheat from the chaff at
that exact moment. Sometimes you are just discarding known junk to make
further work or "add -i" easier.
-Peff
^ permalink raw reply
* Re: Feature suggestion: new 'git add -i' command to discard working copy changes
From: Evan Driscoll @ 2012-12-18 22:10 UTC (permalink / raw)
To: Jeff King; +Cc: Junio C Hamano, git
In-Reply-To: <20121218215914.GB1806@sigill.intra.peff.net>
[-- Attachment #1: Type: text/plain, Size: 1087 bytes --]
On 12/18/2012 03:59 PM, Jeff King wrote:
> I always assumed nobody really used the full "add -i", but maybe it is
> because I am such a command-line snob. Evan, are you after hunk
> selection (like choosing "patch" from the interactive UI), or full path
> selection?
Mostly the latter.
I have two use cases of 'add -i'. The more common one is if I kind of
want -p but don't want to do it for every file. (I guess in part this is
my way of substituting for not knowing all the actions during -p as
well.) But I sometimes use it if I want to stage several but not all
files, as it's often faster for me to just choose the files I want from
the interactive add's list than it is for me to type each of the files
that I want (even with tab completion) -- I'm often working in a project
with unfortunately-deep paths.
What I want for my 'discard' action is more like the latter: I'd like a
fast way to choose a file(s) to discard without having to type the path(s).
Maybe I should just investigate tig or another front end; that might
satisfy my desire.
Evan
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 554 bytes --]
^ permalink raw reply
* [PATCH v2 2/2] Port to QNX
From: Matt Kraai @ 2012-12-18 22:03 UTC (permalink / raw)
To: git; +Cc: Matt Kraai
In-Reply-To: <1355868235-23173-1-git-send-email-kraai@ftbfs.org>
From: Matt Kraai <matt.kraai@amo.abbott.com>
Signed-off-by: Matt Kraai <matt.kraai@amo.abbott.com>
---
Makefile | 21 +++++++++++++++++++++
git-compat-util.h | 6 +++++-
2 files changed, 26 insertions(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
index 2c1f04f..a39dc83 100644
--- a/Makefile
+++ b/Makefile
@@ -80,6 +80,8 @@ all::
#
# Define NO_MEMMEM if you don't have memmem.
#
+# Define NO_GETPAGESIZE if you don't have getpagesize.
+#
# Define NO_STRLCPY if you don't have strlcpy.
#
# Define NO_STRTOUMAX if you don't have both strtoimax and strtoumax in the
@@ -1446,6 +1448,22 @@ else
NO_CURL = YesPlease
endif
endif
+ifeq ($(uname_S),QNX)
+ COMPAT_CFLAGS += -DSA_RESTART=0
+ HAVE_STRINGS_H = YesPlease
+ NEEDS_SOCKET = YesPlease
+ NO_FNMATCH_CASEFOLD = YesPlease
+ NO_GETPAGESIZE = YesPlease
+ NO_ICONV = YesPlease
+ NO_MEMMEM = YesPlease
+ NO_MKDTEMP = YesPlease
+ NO_MKSTEMPS = YesPlease
+ NO_NSEC = YesPlease
+ NO_PTHREADS = YesPlease
+ NO_R_TO_GCC_LINKER = YesPlease
+ NO_STRCASESTR = YesPlease
+ NO_STRLCPY = YesPlease
+endif
-include config.mak.autogen
-include config.mak
@@ -1863,6 +1881,9 @@ ifdef NO_MEMMEM
COMPAT_CFLAGS += -DNO_MEMMEM
COMPAT_OBJS += compat/memmem.o
endif
+ifdef NO_GETPAGESIZE
+ COMPAT_CFLAGS += -DNO_GETPAGESIZE
+endif
ifdef INTERNAL_QSORT
COMPAT_CFLAGS += -DINTERNAL_QSORT
COMPAT_OBJS += compat/qsort.o
diff --git a/git-compat-util.h b/git-compat-util.h
index a88147b..610e6b7 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -75,7 +75,7 @@
# endif
#elif !defined(__APPLE__) && !defined(__FreeBSD__) && !defined(__USLC__) && \
!defined(_M_UNIX) && !defined(__sgi) && !defined(__DragonFly__) && \
- !defined(__TANDEM)
+ !defined(__TANDEM) && !defined(__QNX__)
#define _XOPEN_SOURCE 600 /* glibc2 and AIX 5.3L need 500, OpenBSD needs 600 for S_ISLNK() */
#define _XOPEN_SOURCE_EXTENDED 1 /* AIX 5.3L needs this */
#endif
@@ -413,6 +413,10 @@ void *gitmemmem(const void *haystack, size_t haystacklen,
const void *needle, size_t needlelen);
#endif
+#ifdef NO_GETPAGESIZE
+#define getpagesize() sysconf(_SC_PAGESIZE)
+#endif
+
#ifdef FREAD_READS_DIRECTORIES
#ifdef fopen
#undef fopen
--
1.8.0.2.8.gc42826d.dirty
^ permalink raw reply related
* [PATCH v2 1/2] Make lock local to fetch_pack
From: Matt Kraai @ 2012-12-18 22:03 UTC (permalink / raw)
To: git; +Cc: Matt Kraai
In-Reply-To: <1355868235-23173-1-git-send-email-kraai@ftbfs.org>
From: Matt Kraai <matt.kraai@amo.abbott.com>
lock is only used by fetch_pack, so move it into that function.
Signed-off-by: Matt Kraai <matt.kraai@amo.abbott.com>
---
builtin/fetch-pack.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/builtin/fetch-pack.c b/builtin/fetch-pack.c
index e644398..9bc10b3 100644
--- a/builtin/fetch-pack.c
+++ b/builtin/fetch-pack.c
@@ -875,8 +875,6 @@ static int fetch_pack_config(const char *var, const char *value, void *cb)
return git_default_config(var, value, cb);
}
-static struct lock_file lock;
-
static void fetch_pack_setup(void)
{
static int did_setup;
@@ -1069,6 +1067,7 @@ struct ref *fetch_pack(struct fetch_pack_args *my_args,
ref_cpy = do_fetch_pack(fd, ref, sought, pack_lockfile);
if (args.depth > 0) {
+ static struct lock_file lock;
struct cache_time mtime;
struct strbuf sb = STRBUF_INIT;
char *shallow = git_path("shallow");
--
1.8.0.2.8.gc42826d.dirty
^ permalink raw reply related
* [PATCH v2 0/2] Port to QNX
From: Matt Kraai @ 2012-12-18 22:03 UTC (permalink / raw)
To: git
This series ports Git to QNX. It differs from the previous version in
that:
* it's rebased on dm/port, so it narrows the scope of the lock
variable in builtin/fetch-pack.c instead of fetch-pack.c and uses
HAVE_STRINGS_H; and
* it disables use of Pthreads, since fork(2) doesn't work once
Pthreads are used.
The first test suite failure occurs because getcwd(3) can return paths
containing symbolic links.
^ permalink raw reply
* Re: Feature suggestion: new 'git add -i' command to discard working copy changes
From: Jeff King @ 2012-12-18 21:59 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Evan Driscoll, git
In-Reply-To: <7vvcbzdoy9.fsf@alter.siamese.dyndns.org>
On Tue, Dec 18, 2012 at 01:34:38PM -0800, Junio C Hamano wrote:
> Evan Driscoll <driscoll@cs.wisc.edu> writes:
>
> > It's not infrequent that I want to discard changes I've made locally to
> > files ('git checkout file.txt') and find myself wishing that this was an
> > action available from the 'git add --interactive' UI; it feels like it
> > would fit in.
>
> Hrm, not really. "git add" is about manipulating the index and its
> promise is that it won't touch working tree files. And people rely
> on that promise.
>
> I can see how it would be useful to have a UI that is more
> interactive than CLI that shows you a list of paths and lets you
> pick from the list to run "git checkout" on, but I think "git add"
> is a bad match to it.
Yeah. We already generalized "git add -p" to "git checkout -p" (and
"reset -p", etc) to do hunk selection. Nobody bothered to generalize
the rest of "git add --interactive", but logically having "git checkout
--interactive" (and "git reset --interactive") would make sense.
I always assumed nobody really used the full "add -i", but maybe it is
because I am such a command-line snob. Evan, are you after hunk
selection (like choosing "patch" from the interactive UI), or full path
selection?
-Peff
^ permalink raw reply
* Re: Feature suggestion: new 'git add -i' command to discard working copy changes
From: Junio C Hamano @ 2012-12-18 21:34 UTC (permalink / raw)
To: Evan Driscoll; +Cc: git
In-Reply-To: <50D0DA19.5030606@cs.wisc.edu>
Evan Driscoll <driscoll@cs.wisc.edu> writes:
> It's not infrequent that I want to discard changes I've made locally to
> files ('git checkout file.txt') and find myself wishing that this was an
> action available from the 'git add --interactive' UI; it feels like it
> would fit in.
Hrm, not really. "git add" is about manipulating the index and its
promise is that it won't touch working tree files. And people rely
on that promise.
I can see how it would be useful to have a UI that is more
interactive than CLI that shows you a list of paths and lets you
pick from the list to run "git checkout" on, but I think "git add"
is a bad match to it.
^ permalink raw reply
* Feature suggestion: new 'git add -i' command to discard working copy changes
From: Evan Driscoll @ 2012-12-18 21:03 UTC (permalink / raw)
To: git
[-- Attachment #1: Type: text/plain, Size: 460 bytes --]
It's not infrequent that I want to discard changes I've made locally to
files ('git checkout file.txt') and find myself wishing that this was an
action available from the 'git add --interactive' UI; it feels like it
would fit in.
Does this sound like it would be useful? I might even be able to try my
hand at adding it if it seems like something that might be accepted
upstream and someone can point me at the places in the code to look.
Evan
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 554 bytes --]
^ permalink raw reply
* Re: Q: do people compile with NO_FNMATCH on OpenBSD 5.2?
From: Junio C Hamano @ 2012-12-18 20:51 UTC (permalink / raw)
To: Greg Troxel; +Cc: git, Arnout Engelen
In-Reply-To: <rmisj732jop.fsf@fnord.ir.bbn.com>
Greg Troxel <gdt@ir.bbn.com> writes:
> *** t0070-fundamental.sh ***
> ok 1 - character classes (isspace, isalpha etc.)
> not ok - 2 mktemp to nonexistent directory prints filename
> #
> # test_must_fail test-mktemp doesnotexist/testXXXXXX 2>err &&
> # grep "doesnotexist/test" err
> #
> ok 3 - mktemp to unwritable directory prints filename
> ok 4 - check for a bug in the regex routines
> # failed 1 among 4 test(s)
> 1..4
>
> Running this by hand, I get:
>
> gdt 51 /usr/pkgsrc/devel/scmgit-base/work/git-1.8.0.1/t > ../test-mktemp foo/barXXXXXX > MKTEMP.stdout 2> MKTEMP.stderr; ls -l MKTEMP*
> -rw-r--r-- 1 gdt wheel 121 Dec 18 15:14 MKTEMP.stderr
> -rw-r--r-- 1 gdt wheel 0 Dec 18 15:14 MKTEMP.stdout
> gdt 52 /usr/pkgsrc/devel/scmgit-base/work/git-1.8.0.1/t > cat MKTEMP.stderr
> fatal: Unable to create temporary file '/usr/pkgsrc/devel/scmgit-base/work/git-1.8.0.1/t/foo': No such file or directory
>
> It seems ENOENT is correct for the directory not existing. I think the
> test is complaining that the failed call to mkstemp modified the
> argument.
>
> Looking at:
>
> http://pubs.opengroup.org/onlinepubs/9699919799/functions/mkstemp.html
>
> I can't see that it requires anything in particular for the in/out
> paramater when there is an error.
True. Perhaps something like this.
-- >8 --
Subject: xmkstemp(): avoid showing truncated template more carefully
Some implementations of xmkstemp() leaves the given in/out buffer
truncated when they return with failure.
6cf6bb3 (Improve error messages when temporary file creation fails,
2010-12-18) attempted to show the real filename we tried to create
(but failed), and if that is not available due to such truncation,
to show the original template that was given by the caller.
But it failed to take into account that the given template could
have "directory/" in front, in which case the truncation point may
not be template[0] but somewhere else.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
wrapper.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git c/wrapper.c w/wrapper.c
index 68739aa..a066e2e 100644
--- c/wrapper.c
+++ w/wrapper.c
@@ -229,7 +229,7 @@ int xmkstemp(char *template)
int saved_errno = errno;
const char *nonrelative_template;
- if (!template[0])
+ if (strlen(template) != strlen(origtemplate))
template = origtemplate;
nonrelative_template = absolute_path(template);
^ permalink raw reply related
* What's cooking in git.git (Dec 2012, #05; Tue, 18)
From: Junio C Hamano @ 2012-12-18 20:31 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'.
The tip of the 'master' branch is a bit past 1.8.1-rc2; hopefully we
can go final around the end of the week.
Many topics are getting into good shape in 'next', hopefully ready
to be merged soon after the 1.8.1 final.
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]
* cc/no-gitk-build-dependency (2012-12-18) 3 commits
- Makefile: replace "echo 1>..." with "echo >..."
- Makefile: detect when PYTHON_PATH changes
- Makefile: remove tracking of TCLTK_PATH
Remove leftover bits from an earlier change to move gitk in its own
subdirectory. Reimplementing the dependency tracking rules needs
to be done in gitk history separately.
* cr/doc-checkout-branch (2012-12-18) 2 commits
- Documentation/git-checkout.txt: document 70c9ac2 behavior
- Documentation/git-checkout.txt: clarify usage
Document the magic "git checkout <no-such-branch>" hack to create
local branch out of a remote tracking branch that hasn't been
documented so far.
Will merge to 'next'.
* jc/format-color-auto (2012-12-17) 2 commits
- log --format: teach %C(auto,black) to respect color config
- t6006: clean up whitespace
Introduce "log --format=%C(auto,blue)Foo%C(auto,reset)" that does
not color its output when writing to a non-terminal.
Will merge to 'next'.
* ss/svn-prompt (2012-12-17) 3 commits
- git-svn, perl/Git.pm: extend and use Git->prompt method for querying users
- perl/Git.pm: Honor SSH_ASKPASS as fallback if GIT_ASKPASS is not set
- git-svn, perl/Git.pm: add central method for prompting passwords
Waiting for an Ack from the area export.
* zk/clean-report-failure (2012-12-17) 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.
Waiting for responses to review comments.
* jc/doc-diff-blobs (2012-12-18) 1 commit
- Documentation: Describe "git diff <blob> <blob>" separately
"git diff <blob> <blob>" was not documented and was only hinted as
an extension to "git diff <commit> <commit> -- <pathspec>", but
comparison between two blobs are more special than that. It does
not take any pathspec to begin with.
* mp/complete-paths (2012-12-18) 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.
--------------------------------------------------
[Stalled]
* jc/merge-blobs (2012-12-13) 5 commits
. [broken] wip to 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?
A beginning of a new merge strategy based on the disused merge-tree
proof-of-concept code.
* jc/doc-maintainer (2012-11-27) 1 commit
- update "howto maintain git"
An early draft that is still incomplete.
* fc/remote-bzr (2012-12-13) 10 commits
- (fixup) test-bzr.sh: fix multi-line string assignment
- remote-bzr: detect local repositories
- remote-bzr: add support for older versions of bzr
- remote-bzr: add support to push special modes
- remote-bzr: add support for fecthing special modes
- remote-bzr: add simple tests
- remote-bzr: update working tree upon pushing
- remote-bzr: add support for remote repositories
- remote-bzr: add support for pushing
- Add new remote-bzr transport helper
New remote helper for bzr (v3). With minor fixes, this may be ready
for 'next'.
* mo/cvs-server-updates (2012-12-09) 18 commits
- 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
Needs review by folks interested in cvsserver.
* as/check-ignore (2012-11-08) 14 commits
- t0007: fix tests on Windows
- Documentation/check-ignore: we show the deciding match, not the first
- Add git-check-ignore sub-command
- dir.c: provide free_directory() for reclaiming dir_struct memory
- pathspec.c: move reusable code from builtin/add.c
- dir.c: refactor treat_gitlinks()
- dir.c: keep track of where patterns came from
- dir.c: refactor is_path_excluded()
- dir.c: refactor is_excluded()
- dir.c: refactor is_excluded_from_list()
- dir.c: rename excluded() to is_excluded()
- dir.c: rename excluded_from_list() to is_excluded_from_list()
- dir.c: rename path_excluded() to is_path_excluded()
- dir.c: rename cryptic 'which' variable to more consistent name
Duy helped to reroll this.
Expecting a re-roll.
* aw/rebase-am-failure-detection (2012-10-11) 1 commit
- rebase: Handle cases where format-patch fails
I am unhappy a bit about the possible performance implications of
having to store the output in a temporary file only for a rare case
of format-patch aborting.
* 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.
* fc/remote-testgit-feature-done (2012-10-29) 1 commit
- remote-testgit: properly check for errors
Needs review and Ack (or Nack) from people involved in the remote
helper interface for this to move forward.
* rc/maint-complete-git-p4 (2012-09-24) 1 commit
(merged to 'next' on 2012-10-29 at af52cef)
+ Teach git-completion about git p4
Comment from Pete will need to be addressed in a follow-up patch.
* 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/blame-no-follow (2012-09-21) 2 commits
- 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.
Stalled mostly due to lack of responses.
* jc/doc-default-format (2012-11-26) 2 commits
- [SQAUSH] allow "cd Doc* && make DEFAULT_DOC_TARGET=..."
- Allow generating a non-default set of documentation
Need to address the installation half if this is to be any useful.
* mk/maint-graph-infinity-loop (2012-09-25) 1 commit
- graph.c: infinite loop in git whatchanged --graph -m
The --graph code fell into infinite loop when asked to do what the
code did not expect ;-)
Anybody who worked on "--graph" wants to comment?
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.
Waiting for comments.
* 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 re-roll.
"The first remote becomes the default" bit is better done as a
separate step.
--------------------------------------------------
[Cooking]
* ja/directory-attrs (2012-12-17) 1 commit
(merged to 'next' on 2012-12-17 at ced8e73)
+ Add directory pattern matching to attributes
The attribute mechanism didn't allow limiting attributes to be
applied to only a single directory itself with "path/" like the
exclude mechanism does.
Will cook in 'next'.
* jk/mailmap-cleanup (2012-12-12) 5 commits
(merged to 'next' on 2012-12-17 at 07c1a11)
+ contrib: update stats/mailmap script
+ .mailmap: normalize emails for Linus Torvalds
+ .mailmap: normalize emails for Jeff King
+ .mailmap: fix broken entry for Martin Langhoff
+ .mailmap: match up some obvious names/emails
Update various entries in our .mailmap file.
* jk/mailmap-from-blob (2012-12-13) 5 commits
(merged to 'next' on 2012-12-17 at 14b7cdc)
+ mailmap: default mailmap.blob in bare repositories
+ mailmap: fix some documentation loose-ends for mailmap.blob
+ mailmap: clean up read_mailmap error handling
+ mailmap: support reading mailmap from blobs
+ mailmap: refactor mailmap parsing for non-file sources
Allow us to read, and default to read, mailmap files from the tip
of the history in bare repositories. This will help running tools
like shortlog in server settings.
* nd/index-format-doc (2012-12-13) 1 commit
(merged to 'next' on 2012-12-17 at 7984924)
+ index-format.txt: clarify what is "invalid"
* as/doc-for-devs (2012-12-16) 2 commits
- Documentation: move support for old compilers to CodingGuidelines
- SubmittingPatches: add convention of prefixing commit messages
It might be a better idea to move the text the bottom one adds to
the extended description from the quick checklist part.
Will merge to 'next'.
* dm/port (2012-12-18) 4 commits
- git-compat-util.h: do not #include <sys/param.h> by default
- Generalize the inclusion of strings.h
- Detect when the passwd struct is missing pw_gecos
- Support builds when sys/param.h is missing
Will merge to 'next'.
* jc/fetch-tags-doc (2012-12-13) 1 commit
(merged to 'next' on 2012-12-17 at 857413a)
+ fetch --tags: clarify documentation
The explanation for "fetch --tags" was actually talking more about
"fetch --no-tags". Clariify what "--tags" really means.
* jk/avoid-mailto-invalid-in-doc (2012-12-16) 1 commit
- Documentation: don't link to example mail addresses
Avoids invalid sample e-mail addresses from becoming mailto links
in the formatted output, which by itself is "Meh" for me (who
cares?) but it highlights some issues with ``pretty quotes''.
Will merge to 'next'.
* jk/complete-commit-c (2012-12-15) 1 commit
- completion: complete refs for "git commit -c"
Complete "git commmit -c foo<TAB>" into a refname that begins with
"foo".
Will merge to 'next'.
* jk/error-const-return (2012-12-15) 2 commits
- silence some -Wuninitialized false positives
- make error()'s constant return value more visible
Help compilers' flow analysis by making it more explicit that
error() always returns -1, to reduce false "variable used
uninitialized" warnings.
This is still an RFC.
* mk/qnx (2012-12-15) 2 commits
- Port to QNX
- Make lock local to fetch_pack
Port to QNX; we may want to rebase this on top of dm/port topic as
it also wants to use the HAVE_STRINGS_H mechanism it introduces.
* rj/maint-cygwin-say-color (2012-12-15) 1 commit
- tests: Allow customization of how say_color() prints
Even though I do not think of a cleaner way to do this, I am not
happy with the way how $GIT_TEST_PRINT and $GIT_TEST_PRINT_LN are
interpolated into the command line with token splitting at $IFS.
* sl/readme-gplv2 (2012-12-15) 2 commits
- README: it does not matter who the current maintainer is
- README: Git is released under the GPLv2, not just "the GPL"
Clarify that the project as a whole is GPLv2 only, with some parts
borrowed under different licenses that are compatible with GPLv2.
Will merge to 'next'.
* ta/api-index-doc (2012-12-16) 1 commit
- Remove misleading date from api-index-skel.txt
Will merge to 'next'.
* as/test-tweaks (2012-12-17) 7 commits
- tests: paint unexpectedly fixed known breakages in bold red
- tests: test the test framework more thoroughly
- tests: refactor mechanics of testing in a sub test-lib
- tests: change info messages from yellow/brown to bold cyan
- tests: paint skipped tests in bold blue
- tests: paint known breakages in bold yellow
- tests: test number comes first in 'not ok $count - $message'
Various minor tweaks to the test framework to paint its output
lines in colors that match what they mean better.
Will merge to 'next'.
* sp/shortlog-missing-lf (2012-12-11) 2 commits
(merged to 'next' on 2012-12-11 at 64b8429)
+ strbuf_add_wrapped*(): Remove unused return value
+ shortlog: fix wrapping lines of wraplen
When a line to be wrapped has a solid run of non space characters
whose length exactly is the wrap width, "git shortlog -w" failed to
add a newline after such a line.
Will cook in 'next'.
* ap/log-mailmap (2012-12-15) 7 commits
- 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 buffer length limit in map_user
- Use split_ident_line to parse author and committer
Clean up various codepaths around mailmap and teach the "log"
machinery to use it.
Will merge to 'next' after reading it over once again.
* jc/fetch-ignore-symref (2012-12-11) 1 commit
(merged to 'next' on 2012-12-17 at 370e2c8)
+ fetch: ignore wildcarded refspecs that update local symbolic refs
Avoid false error from an attempt to update local symbolic ref via
fetch.
Will cook in 'next'.
* md/gitweb-sort-by-age (2012-12-11) 1 commit
(merged to 'next' on 2012-12-13 at 9f39410)
+ gitweb: Sort projects with undefined ages last
Gitweb showed repositories without any commit at the top in its
age-sorted view, in which the users are interested in looking at
active projects; sorting them at the bottom makes it more useful.
Will cook in 'next'.
* ss/nedmalloc-compilation (2012-12-11) 1 commit
(merged to 'next' on 2012-12-13 at c1f0d7f)
+ nedmalloc: Fix a compile warning (exposed as error) with GCC 4.7.2
Will cook in 'next'.
* wk/submodule-update-remote (2012-12-12) 3 commits
- submodule add: If --branch is given, record it in .gitmodules
- submodule update: add --remote for submodule's upstream changes
- submodule: add get_submodule_config helper funtion
Expecting a re-roll.
* jc/maint-fbsd-sh-ifs-workaround (2012-12-10) 1 commit
(merged to 'next' on 2012-12-11 at 6659fdc)
+ sh-setup: work around "unset IFS" bug in some shells
Will cook in 'next'.
* jc/same-encoding (2012-12-10) 1 commit
(merged to 'next' on 2012-12-17 at 86b41c7)
+ format_commit_message(): simplify calls to logmsg_reencode()
Finishing touches to the series to unify "Do we need to reencode
between these two encodings?" logic.
* nd/invalidate-i-t-a-cache-tree (2012-12-15) 4 commits
- cache-tree: invalidate i-t-a paths after generating trees
- cache-tree: fix writing cache-tree when CE_REMOVE is present
- cache-tree: replace "for" loops in update_one with "while" loops
- cache-tree: remove dead i-t-a code in verify_cache()
Writing out a tree object when you still have intent-to-add entries
in the index left an incorrect cache-tree data there.
Will merge to 'next'.
* jl/submodule-deinit (2012-12-04) 1 commit
(merged to 'next' on 2012-12-07 at ea772f0)
+ 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.
Will cook in 'next'.
* sl/git-svn-docs (2012-12-05) 4 commits
(merged to 'next' on 2012-12-07 at 5bfbb73)
+ git-svn: Note about tags.
+ git-svn: Expand documentation for --follow-parent
+ git-svn: Recommend use of structure options.
+ git-svn: Document branches with at-sign(@).
Will cook in 'next'.
* pf/editor-ignore-sigint (2012-12-02) 5 commits
(merged to 'next' on 2012-12-07 at 6b04419)
+ launch_editor: propagate signals from editor to git
+ run-command: do not warn about child death from terminal
+ launch_editor: ignore terminal signals while editor has control
+ launch_editor: refactor to use start/finish_command
+ run-command: drop silent_exec_failure arg from wait_or_whine
Avoid confusing cases where the user hits Ctrl-C while in the editor
session, not realizing git will receive the signal. Since most editors
will take over the terminal and will block SIGINT, this is not likely
to confuse anyone.
Will cook in 'next'.
* bc/append-signed-off-by (2012-11-26) 11 commits
- 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 re-roll after a review.
* mh/unify-xml-in-imap-send-and-http-push (2012-12-02) 8 commits
(merged to 'next' on 2012-12-03 at d677090)
+ wrap_in_html(): process message in bulk rather than line-by-line
+ wrap_in_html(): use strbuf_addstr_xml_quoted()
+ imap-send: change msg_data from storing (ptr, len) to storing strbuf
+ imap-send: correctly report errors reading from stdin
+ imap-send: store all_msgs as a strbuf
+ lf_to_crlf(): NUL-terminate msg_data::data
+ xml_entities(): use function strbuf_addstr_xml_quoted()
+ Add new function strbuf_add_xml_quoted()
Update imap-send to reuse xml quoting code from http-push codepath,
clean up some code, and fix a small bug.
Will cook in 'next'.
* jk/fsck-dot-in-trees (2012-11-28) 2 commits
(merged to 'next' on 2012-11-28 at 519dabc)
+ fsck: warn about ".git" in trees
+ fsck: warn about '.' and '..' in trees
Will cook in 'next'.
* mh/pthreads-autoconf (2012-11-27) 1 commit
(merged to 'next' on 2012-11-28 at 780600e)
+ configure.ac: fix pthreads detection on Mac OS X
Will cook in 'next'.
* jn/warn-on-inaccessible-loosen (2012-10-14) 4 commits
(merged to 'next' on 2012-11-28 at 43d51c2)
+ config: exit on error accessing any config file
+ doc: advertise GIT_CONFIG_NOSYSTEM
+ config: treat user and xdg config permission problems as errors
+ config, gitignore: failure to access with ENOTDIR is ok
An RFC to deal with a situation where .config/git is a file and we
notice .config/git/config is not readable due to ENOTDIR, not
ENOENT.
Will cook in 'next'.
* mh/ceiling (2012-10-29) 8 commits
(merged to 'next' on 2012-11-26 at d1ce76a)
+ string_list_longest_prefix(): remove function
+ setup_git_directory_gently_1(): resolve symlinks in ceiling paths
+ longest_ancestor_length(): require prefix list entries to be normalized
+ longest_ancestor_length(): take a string_list argument for prefixes
+ longest_ancestor_length(): use string_list_split()
+ Introduce new function real_path_if_valid()
+ real_path_internal(): add comment explaining use of cwd
+ Introduce new static function real_path_internal()
Elements of GIT_CEILING_DIRECTORIES list may not match the real
pathname we obtain from getcwd(), leading the GIT_DIR discovery
logic to escape the ceilings the user thought to have specified.
Resurrected from Stalled; the earlier performance fear was
unwarranted.
Will cook in 'next'.
* fc/fast-export-fixes (2012-12-03) 15 commits
(merged to 'next' on 2012-12-03 at f9df523)
+ fast-export: make sure updated refs get updated
+ fast-export: don't handle uninteresting refs
+ fast-export: fix comparison in tests
+ fast-export: trivial cleanup
+ remote-testgit: implement the "done" feature manually
+ remote-testgit: report success after an import
+ remote-testgit: exercise more features
+ remote-testgit: cleanup tests
+ remote-testgit: remove irrelevant test
+ remote-testgit: remove non-local functionality
+ Add new simplified git-remote-testgit
+ Rename git-remote-testgit to git-remote-testpy
+ remote-helpers: fix failure message
+ remote-testgit: fix direction of marks
+ fast-export: avoid importing blob marks
Will cook in 'next'.
* jc/apply-trailing-blank-removal (2012-10-12) 1 commit
(merged to 'next' on 2012-11-26 at 3af69e7)
+ apply.c:update_pre_post_images(): the preimage can be truncated
Fix to update_pre_post_images() that did not take into account the
possibility that whitespace fix could shrink the preimage and
change the number of lines in it.
Will cook in 'next'.
* nd/pathspec-wildcard (2012-11-26) 4 commits
(merged to 'next' on 2012-12-03 at eca0fcb)
+ tree_entry_interesting: do basedir compare on wildcard patterns when possible
+ pathspec: apply "*.c" optimization from exclude
+ pathspec: do exact comparison on the leading non-wildcard part
+ pathspec: save the non-wildcard length part
Will cook in 'next'.
* nd/wildmatch (2012-12-15) 15 commits
(merged to 'next' on 2012-12-15 at c734714)
+ t3070: Disable some failing fnmatch tests
(merged to 'next' on 2012-11-21 at 151288f)
+ test-wildmatch: avoid Windows path mangling
(merged to 'next' on 2012-10-25 at 510e8df)
+ Support "**" wildcard in .gitignore and .gitattributes
+ wildmatch: make /**/ match zero or more directories
+ wildmatch: adjust "**" behavior
+ wildmatch: fix case-insensitive matching
+ wildmatch: remove static variable force_lower_case
+ wildmatch: make wildmatch's return value compatible with fnmatch
+ t3070: disable unreliable fnmatch tests
+ Integrate wildmatch to git
+ wildmatch: follow Git's coding convention
+ wildmatch: remove unnecessary functions
+ Import wildmatch from rsync
+ ctype: support iscntrl, ispunct, isxdigit and isprint
+ ctype: make sane_ctype[] const array
Allows pathname patterns in .gitignore and .gitattributes files
with double-asterisks "foo/**/bar" to match any number of directory
hierarchies.
I suspect that this needs to be plugged to pathspec matching code;
otherwise "git log -- 'Docum*/**/*.txt'" would not show the log for
commits that touch Documentation/git.txt, which would be confusing
to the users.
Will cook in 'next'.
* cr/push-force-tag-update (2012-12-03) 10 commits
(merged to 'next' on 2012-12-04 at af2e3a9)
+ push: allow already-exists advice to be disabled
+ push: rename config variable for more general use
+ push: cleanup push rules comment
+ push: clarify rejection of update to non-commit-ish
+ push: require force for annotated tags
+ push: require force for refs under refs/tags/
+ push: flag updates that require force
+ push: keep track of "update" state separately
+ push: add advice for rejected tag reference
+ push: return reject reasons as a bitset
Require "-f" for push to update a tag, even if it is a fast-forward.
Will cook in 'next'.
^ permalink raw reply
* Re: Q: do people compile with NO_FNMATCH on OpenBSD 5.2?
From: Greg Troxel @ 2012-12-18 20:23 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
In-Reply-To: <7va9tbf7vd.fsf@alter.siamese.dyndns.org>
[-- Attachment #1: Type: text/plain, Size: 1648 bytes --]
Junio C Hamano <gitster@pobox.com> writes:
> I seem to get a failure from
>
> git ls-files "a*"
>
> in t/t0000-basic.sh if I link with platform's fnmatch().
Not what you asked, but on NetBSD 5.1, libc fnmatch is used, and with
git 1.8.0.1 that test passes.
This prompted me to look at the rest of the tests. All tests pass
(except for expected failures) until:
*** t0070-fundamental.sh ***
ok 1 - character classes (isspace, isalpha etc.)
not ok - 2 mktemp to nonexistent directory prints filename
#
# test_must_fail test-mktemp doesnotexist/testXXXXXX 2>err &&
# grep "doesnotexist/test" err
#
ok 3 - mktemp to unwritable directory prints filename
ok 4 - check for a bug in the regex routines
# failed 1 among 4 test(s)
1..4
Running this by hand, I get:
gdt 51 /usr/pkgsrc/devel/scmgit-base/work/git-1.8.0.1/t > ../test-mktemp foo/barXXXXXX > MKTEMP.stdout 2> MKTEMP.stderr; ls -l MKTEMP*
-rw-r--r-- 1 gdt wheel 121 Dec 18 15:14 MKTEMP.stderr
-rw-r--r-- 1 gdt wheel 0 Dec 18 15:14 MKTEMP.stdout
gdt 52 /usr/pkgsrc/devel/scmgit-base/work/git-1.8.0.1/t > cat MKTEMP.stderr
fatal: Unable to create temporary file '/usr/pkgsrc/devel/scmgit-base/work/git-1.8.0.1/t/foo': No such file or directory
It seems ENOENT is correct for the directory not existing. I think the
test is complaining that the failed call to mkstemp modified the
argument.
Looking at:
http://pubs.opengroup.org/onlinepubs/9699919799/functions/mkstemp.html
I can't see that it requires anything in particular for the in/out
paramater when there is an error.
[-- Attachment #2: Type: application/pgp-signature, Size: 194 bytes --]
^ permalink raw reply
* Re: [PATCH v3] git-completion.bash: add support for path completion
From: Manlio Perillo @ 2012-12-18 20:29 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git, SZEDER Gábor, Felipe Contreras
In-Reply-To: <7vpq27f9m7.fsf@alter.siamese.dyndns.org>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Il 18/12/2012 20:22, Junio C Hamano ha scritto:
> [...]
>> Note that the performance is the reason why I suggested, in a previous
>> email, that git should have some more options to format data in custom ways.
>> As an example, there is no way to tell ls-files to not recurse
>> directories, and there is no way to also get the file type.
>
> To ls-files, no-recurse is an idiotic thing to ask. The index is a
> flat structure that is read as a whole. There is no recursion
> involved.
What about an option like --as-tree, so that ls-files will list the
files as they were in a tree, instead of a flat structure ?
Thanks Manlio
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iEYEARECAAYFAlDQ0j4ACgkQscQJ24LbaURXoACffQ4iz6MsoeffEZEBib1b1KF8
NZsAoIUXa7OonWyFxfJ35mukBK/sddGr
=0nO7
-----END PGP SIGNATURE-----
^ permalink raw reply
* Q: do people compile with NO_FNMATCH on OpenBSD 5.2?
From: Junio C Hamano @ 2012-12-18 20:00 UTC (permalink / raw)
To: git
I seem to get a failure from
git ls-files "a*"
in t/t0000-basic.sh if I link with platform's fnmatch().
^ permalink raw reply
* Re: sys/param.h
From: Torsten Bögershausen @ 2012-12-18 19:46 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
In-Reply-To: <7vobhrgupr.fsf_-_@alter.siamese.dyndns.org>
On 18.12.12 18:01, Junio C Hamano wrote:
> Johannes Sixt <j.sixt@viscovery.net> writes:
>
>>> Junio C Hamano wrote:
>>>> It could turn out that we may be able to get rid of sys/param.h
>>>> altogether, but one step at a time. Inputs from people on minority
>>>> platforms are very much appreciated---does your platform build fine
>>>> when the inclusion of the file is removed from git-compat-util.h?
>>
>> MinGW works fine with sys/param.h removed from git-compat-util.h.
>
> It seems that OpenBSD 5.2 does not mind it getting removed, either.
> Debian 5 and Debian 6 seem OK; so do Ubuntu 10.04 and 12.04. I have
> a hunch that Fedora or anything based on glibc would be fine, too.
>
> What other platforms do we care deeply about?
Mac OS X 10.6.8: OK
^ permalink raw reply
* Re: Incorrect man page for git-diff
From: Junio C Hamano @ 2012-12-18 19:32 UTC (permalink / raw)
To: Manlio Perillo; +Cc: git
In-Reply-To: <50D0BF8D.5050004@gmail.com>
Manlio Perillo <manlio.perillo@gmail.com> writes:
> I'm not sure the man page is wrong and should be changed:
>
> -- usage: git diff [<options>] [<commit> [<commit>]] [--] [<path>...]
> ++ usage: git diff [<options>] [<commit> [<commit>]]
Comparison of two blob objects works entirely in different way (it
is not even recursively comparing two tree-shaped things).
I do not think this mode is common enough to deserve to be in the
short help text, but it should be in the documentation, perhaps like
this patch, I think.
Documentation/git-diff.txt | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git c/Documentation/git-diff.txt w/Documentation/git-diff.txt
index f8d0819..f8c0601 100644
--- c/Documentation/git-diff.txt
+++ w/Documentation/git-diff.txt
@@ -12,6 +12,7 @@ SYNOPSIS
'git diff' [options] [<commit>] [--] [<path>...]
'git diff' [options] --cached [<commit>] [--] [<path>...]
'git diff' [options] <commit> <commit> [--] [<path>...]
+'git diff' [options] <blob> <blob>
'git diff' [options] [--no-index] [--] <path> <path>
DESCRIPTION
@@ -55,6 +56,11 @@ directories. This behavior can be forced by --no-index.
This is to view the changes between two arbitrary
<commit>.
+'git diff' [options] <blob> <blob>::
+
+ This form is to view the differences between the raw
+ contents of two blob objects.
+
'git diff' [--options] <commit>..<commit> [--] [<path>...]::
This is synonymous to the previous form. If <commit> on
@@ -72,8 +78,7 @@ directories. This behavior can be forced by --no-index.
Just in case if you are doing something exotic, it should be
noted that all of the <commit> in the above description, except
in the last two forms that use ".." notations, can be any
-<tree>. The third form ('git diff <commit> <commit>') can also
-be used to compare two <blob> objects.
+<tree>.
For a more complete list of ways to spell <commit>, see
"SPECIFYING REVISIONS" section in linkgit:gitrevisions[7].
^ permalink raw reply related
* t7004: do not create unneeded gpghome/gpg.conf when GPG is not used
From: Junio C Hamano @ 2012-12-18 19:25 UTC (permalink / raw)
To: git
These tests themselves are properly protected by the GPG
prerequisite, but one of the set-up steps outside the
test_expect_success block unconditionally assumed that there is a
gpghome/ directory, which is not true if GPG is not being used.
It may be a good idea to move the whole set-up steps in the test but
that is a follow-up topic.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
t/t7004-tag.sh | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git i/t/t7004-tag.sh w/t/t7004-tag.sh
index 5189446..f5a79b1 100755
--- i/t/t7004-tag.sh
+++ w/t/t7004-tag.sh
@@ -1066,12 +1066,12 @@ test_expect_success GPG \
'
# usage with rfc1991 signatures
-echo "rfc1991" > gpghome/gpg.conf
get_tag_header rfc1991-signed-tag $commit commit $time >expect
echo "RFC1991 signed tag" >>expect
echo '-----BEGIN PGP MESSAGE-----' >>expect
test_expect_success GPG \
'creating a signed tag with rfc1991' '
+ echo "rfc1991" >gpghome/gpg.conf &&
git tag -s -m "RFC1991 signed tag" rfc1991-signed-tag $commit &&
get_tag_msg rfc1991-signed-tag >actual &&
test_cmp expect actual
@@ -1085,6 +1085,7 @@ chmod +x fakeeditor
test_expect_success GPG \
'reediting a signed tag body omits signature' '
+ echo "rfc1991" >gpghome/gpg.conf &&
echo "RFC1991 signed tag" >expect &&
GIT_EDITOR=./fakeeditor git tag -f -s rfc1991-signed-tag $commit &&
test_cmp expect actual
@@ -1092,11 +1093,13 @@ test_expect_success GPG \
test_expect_success GPG \
'verifying rfc1991 signature' '
+ echo "rfc1991" >gpghome/gpg.conf &&
git tag -v rfc1991-signed-tag
'
test_expect_success GPG \
'list tag with rfc1991 signature' '
+ echo "rfc1991" >gpghome/gpg.conf &&
echo "rfc1991-signed-tag RFC1991 signed tag" >expect &&
git tag -l -n1 rfc1991-signed-tag >actual &&
test_cmp expect actual &&
^ permalink raw reply related
* Re: [PATCH v3] git-completion.bash: add support for path completion
From: Junio C Hamano @ 2012-12-18 19:22 UTC (permalink / raw)
To: Manlio Perillo; +Cc: git, SZEDER Gábor, Felipe Contreras
In-Reply-To: <50D0BC32.2020401@gmail.com>
Manlio Perillo <manlio.perillo@gmail.com> writes:
> Il 18/12/2012 18:53, Junio C Hamano ha scritto:
>> [jch: cc'ed git-completion experts to review implementation details]
>>
>> Manlio Perillo <manlio.perillo@gmail.com> writes:
>>
>>> The git-completion.bash script did not implemented full, git aware,
>>> support for completion, for git commands that operate on files within
>>> the current working directory or the index.
>>>
>>> For these commands, only long options completion was available.
>>
>> I find the "long options completion" is a misleading phrase. It
>> sounds as if you changed the current completion that does not
>> complete "git commit -<TAB>" but does "git commit --<TAB>" to
>> complete the short options (e.g. "git commit -c"), but I do not
>> think that is the topic of this patch.
>>
>
> It does not sound misleading to me.
> I'm saying that the git-completion.bash script only implemented
> completion for long options, but not for file names in the current
> working directory.
>
> Do you think I should rewrite the subject and the log message introduction?
The subject sounds fine; it is just "It only does long options"
sounded as if it were viewing the lack of "short options" support as
an issue. In other words, my knee-jerk answer to "long options, as
opposed to what???" question was "short options", not "files".
If the phrase were "It only does options", the question would become
"options as opposed to what???", which may have given me a chance to
guess "files" as the answer to that question.
> As an example, something like this in the subject:
>
> git-completion.bash: improve some git commands completion
I think the original is better; you do not touch any "options",
either long or short. You are improving "paths", and the original
is much clearer on that point.
>
> and in the message:
>
> The git-completion.bash script did not implemented full, git aware,
> support for completion, for git commands that operate on files within
With s/for completion/to complete paths/, it would be perfect. You
do not touch options, and this new log message does not talk about
it. Much nicer than the one that was posted.
> Note that the performance is the reason why I suggested, in a previous
> email, that git should have some more options to format data in custom ways.
> As an example, there is no way to tell ls-files to not recurse
> directories, and there is no way to also get the file type.
To ls-files, no-recurse is an idiotic thing to ask. The index is a
flat structure that is read as a whole. There is no recursion
involved.
^ permalink raw reply
* Re: Incorrect man page for git-diff
From: Manlio Perillo @ 2012-12-18 19:10 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
In-Reply-To: <7vwqwffcxp.fsf@alter.siamese.dyndns.org>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Il 18/12/2012 19:11, Junio C Hamano ha scritto:
> Manlio Perillo <manlio.perillo@gmail.com> writes:
>
>> Documentation seems to suggest this is supported, but it is not true:
>>
>> $ git diff HEAD:git.c HEAD~100:git.c -- git.c
>> usage: git diff [<options>] [<commit> [<commit>]] [--] [<path>...]
>>
>> unless I'm missing something.
>
> Neither HEAD:git.c nor HEAD~100:git.c are commits.
Well, the documentation calls these parameter "commit", later saying
"For a more complete list of ways to spell <commit>, see "SPECIFYING
REVISIONS".
> You are
> comparing two blob objects in their raw forms without textconv nor
> filter.
>
Note that I was not missing the fact that git diff does not apply
texconv and filters.
I'm not sure the man page is wrong and should be changed:
-- usage: git diff [<options>] [<commit> [<commit>]] [--] [<path>...]
++ usage: git diff [<options>] [<commit> [<commit>]]
Regards Manlio
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iEYEARECAAYFAlDQv40ACgkQscQJ24LbaUT+vwCgj0rjaZbc+/x0+jvAGZydbVKB
244An2pWLj7t4nG3lZzx+LGyH3mjTujS
=TmVI
-----END PGP SIGNATURE-----
^ permalink raw reply
* [PATCH v5 2/3] Makefile: detect when PYTHON_PATH changes
From: Christian Couder @ 2012-12-18 19:00 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
When make is run, the python scripts are created from *.py files that
are changed to use the python given by PYTHON_PATH. And PYTHON_PATH
is set by default to /usr/bin/python on Linux.
This is nice except when you run make another time setting a
different PYTHON_PATH, because, as the python scripts have already
been created, make finds nothing to do.
The goal of this patch is to detect when the PYTHON_PATH changes and
to create the python scripts again when this happens. To do that we
use the same trick that is done to track other variables like prefix,
flags, tcl/tk path and shell path. We update a GIT-PYTHON-VARS file
with the PYTHON_PATH and check if it changed.
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
---
.gitignore | 1 +
Makefile | 16 ++++++++++++++--
2 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/.gitignore b/.gitignore
index 64a454b..56a4b2b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,7 @@
/GIT-CFLAGS
/GIT-LDFLAGS
/GIT-PREFIX
+/GIT-PYTHON-VARS
/GIT-SCRIPT-DEFINES
/GIT-USER-AGENT
/GIT-VERSION-FILE
diff --git a/Makefile b/Makefile
index 585b2eb..7db8445 100644
--- a/Makefile
+++ b/Makefile
@@ -2245,7 +2245,7 @@ $(patsubst %.perl,%,$(SCRIPT_PERL)) git-instaweb: % : unimplemented.sh
endif # NO_PERL
ifndef NO_PYTHON
-$(patsubst %.py,%,$(SCRIPT_PYTHON)): GIT-CFLAGS GIT-PREFIX
+$(patsubst %.py,%,$(SCRIPT_PYTHON)): GIT-CFLAGS GIT-PREFIX GIT-PYTHON-VARS
$(patsubst %.py,%,$(SCRIPT_PYTHON)): % : %.py
$(QUIET_GEN)$(RM) $@ $@+ && \
INSTLIBDIR=`MAKEFLAGS= $(MAKE) -C git_remote_helpers -s \
@@ -2624,6 +2624,18 @@ ifdef GIT_PERF_MAKE_OPTS
@echo GIT_PERF_MAKE_OPTS=\''$(subst ','\'',$(subst ','\'',$(GIT_PERF_MAKE_OPTS)))'\' >>$@
endif
+### Detect Python interpreter path changes
+ifndef NO_PYTHON
+TRACK_PYTHON = $(subst ','\'',-DPYTHON_PATH='$(PYTHON_PATH_SQ)')
+
+GIT-PYTHON-VARS: FORCE
+ @VARS='$(TRACK_PYTHON)'; \
+ if test x"$$VARS" != x"`cat $@ 2>/dev/null`" ; then \
+ echo 1>&2 " * new Python interpreter location"; \
+ echo "$$VARS" >$@; \
+ fi
+endif
+
test_bindir_programs := $(patsubst %,bin-wrappers/%,$(BINDIR_PROGRAMS_NEED_X) $(BINDIR_PROGRAMS_NO_X) $(TEST_PROGRAMS_NEED_X))
all:: $(TEST_PROGRAMS) $(test_bindir_programs)
@@ -2899,7 +2911,7 @@ ifndef NO_TCLTK
$(MAKE) -C git-gui clean
endif
$(RM) GIT-VERSION-FILE GIT-CFLAGS GIT-LDFLAGS GIT-BUILD-OPTIONS
- $(RM) GIT-USER-AGENT GIT-PREFIX GIT-SCRIPT-DEFINES
+ $(RM) GIT-USER-AGENT GIT-PREFIX GIT-SCRIPT-DEFINES GIT-PYTHON-VARS
.PHONY: all install profile-clean clean strip
.PHONY: shell_compatibility_test please_set_SHELL_PATH_to_a_more_modern_shell
--
1.8.1.rc1.2.g8740035
^ permalink raw reply related
* [PATCH v5 3/3] Makefile: replace "echo 1>..." with "echo >..."
From: Christian Couder @ 2012-12-18 19:00 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
This is clearer to many people this way.
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
---
Makefile | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/Makefile b/Makefile
index 7db8445..e055c9a 100644
--- a/Makefile
+++ b/Makefile
@@ -2183,7 +2183,7 @@ endef
GIT-SCRIPT-DEFINES: FORCE
@FLAGS='$(SCRIPT_DEFINES)'; \
if test x"$$FLAGS" != x"`cat $@ 2>/dev/null`" ; then \
- echo 1>&2 " * new script parameters"; \
+ echo >&2 " * new script parameters"; \
echo "$$FLAGS" >$@; \
fi
@@ -2564,7 +2564,7 @@ TRACK_PREFIX = $(bindir_SQ):$(gitexecdir_SQ):$(template_dir_SQ):$(prefix_SQ):\
GIT-PREFIX: FORCE
@FLAGS='$(TRACK_PREFIX)'; \
if test x"$$FLAGS" != x"`cat GIT-PREFIX 2>/dev/null`" ; then \
- echo 1>&2 " * new prefix flags"; \
+ echo >&2 " * new prefix flags"; \
echo "$$FLAGS" >GIT-PREFIX; \
fi
@@ -2573,7 +2573,7 @@ TRACK_CFLAGS = $(CC):$(subst ','\'',$(ALL_CFLAGS)):$(USE_GETTEXT_SCHEME)
GIT-CFLAGS: FORCE
@FLAGS='$(TRACK_CFLAGS)'; \
if test x"$$FLAGS" != x"`cat GIT-CFLAGS 2>/dev/null`" ; then \
- echo 1>&2 " * new build flags"; \
+ echo >&2 " * new build flags"; \
echo "$$FLAGS" >GIT-CFLAGS; \
fi
@@ -2582,7 +2582,7 @@ TRACK_LDFLAGS = $(subst ','\'',$(ALL_LDFLAGS))
GIT-LDFLAGS: FORCE
@FLAGS='$(TRACK_LDFLAGS)'; \
if test x"$$FLAGS" != x"`cat GIT-LDFLAGS 2>/dev/null`" ; then \
- echo 1>&2 " * new link flags"; \
+ echo >&2 " * new link flags"; \
echo "$$FLAGS" >GIT-LDFLAGS; \
fi
@@ -2631,7 +2631,7 @@ TRACK_PYTHON = $(subst ','\'',-DPYTHON_PATH='$(PYTHON_PATH_SQ)')
GIT-PYTHON-VARS: FORCE
@VARS='$(TRACK_PYTHON)'; \
if test x"$$VARS" != x"`cat $@ 2>/dev/null`" ; then \
- echo 1>&2 " * new Python interpreter location"; \
+ echo >&2 " * new Python interpreter location"; \
echo "$$VARS" >$@; \
fi
endif
--
1.8.1.rc1.2.g8740035
^ permalink raw reply related
* [PATCH v5 1/3] Makefile: remove tracking of TCLTK_PATH
From: Christian Couder @ 2012-12-18 19:00 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
It looks like we are tracking the value of TCLTK_PATH in the main
Makefile for no good reason.
This patch removes the useless code used to do this tracking.
Maybe this code should have been moved to gitk-git/Makefile by
62ba514 (Move gitk to its own subdirectory, 2007-11-17).
A patch to do that has just been sent to Paul Mackerras, the gitk
maintainer.
While at it, this patch removes /gitk-git/gitk-wish from
.gitignore as it should be in /gitk-git/.gitignore and the patch
sent to Paul put it there.
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
---
.gitignore | 2 --
Makefile | 14 +-------------
2 files changed, 1 insertion(+), 15 deletions(-)
diff --git a/.gitignore b/.gitignore
index f702415..64a454b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,6 @@
/GIT-BUILD-OPTIONS
/GIT-CFLAGS
/GIT-LDFLAGS
-/GIT-GUI-VARS
/GIT-PREFIX
/GIT-SCRIPT-DEFINES
/GIT-USER-AGENT
@@ -171,7 +170,6 @@
/git-whatchanged
/git-write-tree
/git-core-*/?*
-/gitk-git/gitk-wish
/gitweb/GITWEB-BUILD-OPTIONS
/gitweb/gitweb.cgi
/gitweb/static/gitweb.js
diff --git a/Makefile b/Makefile
index 4ad6fbd..585b2eb 100644
--- a/Makefile
+++ b/Makefile
@@ -2624,18 +2624,6 @@ ifdef GIT_PERF_MAKE_OPTS
@echo GIT_PERF_MAKE_OPTS=\''$(subst ','\'',$(subst ','\'',$(GIT_PERF_MAKE_OPTS)))'\' >>$@
endif
-### Detect Tck/Tk interpreter path changes
-ifndef NO_TCLTK
-TRACK_VARS = $(subst ','\'',-DTCLTK_PATH='$(TCLTK_PATH_SQ)')
-
-GIT-GUI-VARS: FORCE
- @VARS='$(TRACK_VARS)'; \
- if test x"$$VARS" != x"`cat $@ 2>/dev/null`" ; then \
- echo 1>&2 " * new Tcl/Tk interpreter location"; \
- echo "$$VARS" >$@; \
- fi
-endif
-
test_bindir_programs := $(patsubst %,bin-wrappers/%,$(BINDIR_PROGRAMS_NEED_X) $(BINDIR_PROGRAMS_NO_X) $(TEST_PROGRAMS_NEED_X))
all:: $(TEST_PROGRAMS) $(test_bindir_programs)
@@ -2910,7 +2898,7 @@ ifndef NO_TCLTK
$(MAKE) -C gitk-git clean
$(MAKE) -C git-gui clean
endif
- $(RM) GIT-VERSION-FILE GIT-CFLAGS GIT-LDFLAGS GIT-GUI-VARS GIT-BUILD-OPTIONS
+ $(RM) GIT-VERSION-FILE GIT-CFLAGS GIT-LDFLAGS GIT-BUILD-OPTIONS
$(RM) GIT-USER-AGENT GIT-PREFIX GIT-SCRIPT-DEFINES
.PHONY: all install profile-clean clean strip
--
1.8.1.rc1.2.g8740035
^ permalink raw reply related
* Re: [PATCH v3] git-completion.bash: add support for path completion
From: Manlio Perillo @ 2012-12-18 18:55 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git, SZEDER Gábor, Felipe Contreras
In-Reply-To: <7v1uengsbm.fsf@alter.siamese.dyndns.org>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Il 18/12/2012 18:53, Junio C Hamano ha scritto:
> [jch: cc'ed git-completion experts to review implementation details]
>
> Manlio Perillo <manlio.perillo@gmail.com> writes:
>
>> The git-completion.bash script did not implemented full, git aware,
>> support for completion, for git commands that operate on files within
>> the current working directory or the index.
>>
>> For these commands, only long options completion was available.
>
> I find the "long options completion" is a misleading phrase. It
> sounds as if you changed the current completion that does not
> complete "git commit -<TAB>" but does "git commit --<TAB>" to
> complete the short options (e.g. "git commit -c"), but I do not
> think that is the topic of this patch.
>
It does not sound misleading to me.
I'm saying that the git-completion.bash script only implemented
completion for long options, but not for file names in the current
working directory.
Do you think I should rewrite the subject and the log message introduction?
As an example, something like this in the subject:
git-completion.bash: improve some git commands completion
and in the message:
The git-completion.bash script did not implemented full, git aware,
support for completion, for git commands that operate on files within
the current working directory or the index.
As an example:
...
I'm still not fully satisfied with it, however.
It still requires reading the full message to understand the changes
implemented.
>> As an example:
>>
>> git add <TAB>
>>
>> will suggest all files in the current working directory, including
>> ignored files and files that have not been modified.
>>
>> Full support for completion is now implemented, for git commands where
>
> s/Full.*implemented/Support more comprehensive completion/; or
> something, talking in the imperative mood (i.e. as if you are giving
> the order to the codebase to do something).
>
Ok.
>> the non-option arguments always refer to paths within the current
>> working directory or the index, as the follow:
>>
>> * the path completion for the "git mv", "git rm" and "git ls-tree"
>> commands will suggest all cached files.
>
> I thought you dropped "git mv" in this round.
>
Well, no.
But the current implementation should not cause problems.
Also note that I added support for ls-files, too.
There are some XXX marks in the code, but I think that the changes
always improve the old behaviour.
> [...]
>> For all affected commands, completion will always stop at directory
>> boundary. Only standard ignored files are excluded, using the
>> --exclude-standard option of the ls-files command.
>
> I read "always stop at directory boundary" to mean that
>
> git cmd t<TAB>
>
> will give us "t/ tag.c" (assuming there is a new or modified file in
> t/ and tag.c is the only modified file at the root level that begins
> with "t") and then
>
> git cmd t/<TAB>
>
> will likewise show the files and top-level subdirectories within t/
> directory. That would be great.
>
Yes, this is how it works, bugs excluded (I'm not a bash/perl expert).
> [...]
>> +# Perl filter used to process path list returned by ls-files and
>> +# diff-index --name-only commands, in order to list file names
>> +# relative to a specified directory, and append a slash to directory
>> +# names.
>> +# The script expects the prefix path in the "pfx" environ variable.
>> +# The output must be processed with the uniq filter, to remove
>> +# duplicate directories.
>> +# XXX remove duplicates in the Perl script ?
>
> Surely, that will remove one fork/exec with pipeline. I am not sure
> what the performance implication of using Perl here, but because we
> do not have to stick to POSIX shell in this file, the completion
> experts would be able to help rewriting this logic as a pure bash
> script.
>
Ok. I'll wait for a review from git-completion experts.
Note that the performance is the reason why I suggested, in a previous
email, that git should have some more options to format data in custom ways.
As an example, there is no way to tell ls-files to not recurse
directories, and there is no way to also get the file type.
A --no-recurse option, and a change in the code to make, as an example
git ls-files --stage --modified
to honor the --modified option, will probably make it possible to use a
simple sed filter (there is still the problem that, unlike ls-tree,
ls-files shows the complete file path).
> [...]
>> +__git_files ()
>> +{
>> + local dir="$(__gitdir)" flags="-${1}"
>> +
>> + if [ -d "$dir" ]; then
>> + git --git-dir="$dir" ls-files --exclude-standard ${flags} ${pfx} \
>> + | pfx=$2 perl -ne "${__git_index_file_list_filter}" \
>> + | uniq
>
> This is purely a style thing (note that style suggestions are not
> optional), but
>
> the data source command |
> a filter command |
> another filter command
>
> is easier to read and can be spelled without the backslash. The
> same comment applies to git-commit-files as well.
>
I agree.
But I was copying the style currently used in the script
(see the __git_complete_revlist_file function).
Note that I plan to do a small code refactorization, since I need the
ls-tree support code from __git_complete_revlist_file function for a
future change. I can fix these style issues in that patch.
I plan to improve completion support for checkout and reset commands,
too (currently only the commit/tree-ish argument is autocompleted, but
not the path).
Regards Manlio
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iEYEARECAAYFAlDQvDIACgkQscQJ24LbaUTT9wCgh6jtbhdQ7GNIkqCq34QjXdIs
w9QAnjz2VjPFm4n2ICkcWWEsqWDWM+Hm
=8/Ad
-----END PGP SIGNATURE-----
^ permalink raw reply
* [PATCH] Makefile: replace "echo 1>..." with "echo >..."
From: Christian Couder @ 2012-12-18 18:47 UTC (permalink / raw)
To: Pat Thoyts; +Cc: Junio C Hamano, git
This is clearer to many people this way.
A similar patch has been sent to the git mailing list
for git.git.
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
---
Hi Pat,
Here is a patch to apply to your git-gui tree following this
discussion:
http://thread.gmane.org/gmane.comp.version-control.git/211532/
Thanks,
Christian.
Makefile | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/Makefile b/Makefile
index e22ba5c..e9c2bc3 100644
--- a/Makefile
+++ b/Makefile
@@ -254,7 +254,7 @@ lib/tclIndex: $(ALL_LIBFILES) GIT-GUI-VARS
auto_mkindex lib '*.tcl' \
| $(TCL_PATH) $(QUIET_2DEVNULL); then : ok; \
else \
- echo 1>&2 " * $(TCL_PATH) failed; using unoptimized loading"; \
+ echo >&2 " * $(TCL_PATH) failed; using unoptimized loading"; \
rm -f $@ ; \
echo '# Autogenerated by git-gui Makefile' >$@ && \
echo >>$@ && \
@@ -274,8 +274,8 @@ TRACK_VARS = \
GIT-GUI-VARS: FORCE
@VARS='$(TRACK_VARS)'; \
if test x"$$VARS" != x"`cat $@ 2>/dev/null`" ; then \
- echo 1>&2 " * new locations or Tcl/Tk interpreter"; \
- echo 1>$@ "$$VARS"; \
+ echo >&2 " * new locations or Tcl/Tk interpreter"; \
+ echo >$@ "$$VARS"; \
fi
ifdef GITGUI_MACOSXAPP
--
1.8.1.rc1.2.g8740035
^ permalink raw reply related
* Re: [PATCH] Makefile: track TCLTK_PATH as it used to be tracked
From: Christian Couder @ 2012-12-18 18:23 UTC (permalink / raw)
To: gitster; +Cc: paulus, git
In-Reply-To: <7vk3sfguh2.fsf@alter.siamese.dyndns.org>
From: Junio C Hamano <gitster@pobox.com>
> Christian Couder <chriscool@tuxfamily.org> writes:
>
>> ...
>> +GIT-TCLTK-VARS: FORCE
>> + @VARS='$(TRACK_TCLTK)'; \
>> + if test x"$$VARS" != x"`cat $@ 2>/dev/null`" ; then \
>> + echo 1>&2 " * new Tcl/Tk interpreter location"; \
>
> I think in a related patch to the top-level Makefile changes it to
> lose "1" to read it as "echo >&2" here.
Yeah, I forgot to remove the 1 here.
Thanks,
Christian.
^ permalink raw reply
* Re: Incorrect man page for git-diff
From: Junio C Hamano @ 2012-12-18 18:11 UTC (permalink / raw)
To: Manlio Perillo; +Cc: git
In-Reply-To: <50D0AA78.5090603@gmail.com>
Manlio Perillo <manlio.perillo@gmail.com> writes:
> Documentation seems to suggest this is supported, but it is not true:
>
> $ git diff HEAD:git.c HEAD~100:git.c -- git.c
> usage: git diff [<options>] [<commit> [<commit>]] [--] [<path>...]
>
> unless I'm missing something.
Neither HEAD:git.c nor HEAD~100:git.c are commits. You are
comparing two blob objects in their raw forms without textconv nor
filter.
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox