* Re: [PATCH] Update the usage bundle string.
From: Johannes Sixt @ 2009-09-17 6:12 UTC (permalink / raw)
To: Thiago Farina; +Cc: git
In-Reply-To: <1253136011-12011-1-git-send-email-tfransosi@gmail.com>
Thiago Farina schrieb:
> @@ -11,6 +11,12 @@
>
> static const char *bundle_usage="git bundle (create <bundle> <git rev-list args> | verify <bundle> | list-heads <bundle> [refname]... | unbundle <bundle> [refname]... )";
Is this variable still used? Shouldn't it be removed?
> +static const char builtin_bundle_usage[] = "\
> + git bundle create <file> <git-rev-list args>\n\
> + git bundle verify <file>\n\
> + git bundle list-heads <file> [refname...]\n\
> + git bundle unbundle <file> [refname...]";
You indent the usage text. Do other commands do that, too? If you resend,
it may be worth using this style:
static const char builtin_bundle_usage[] =
"git bundle create <file> <git-rev-list args>\n"
"git bundle verify <file>\n"
...
i.e. not to use backslash-at-eol.
> - if (argc < 3)
> - usage(bundle_usage);
> + if (argc < 3)
> + usage(builtin_bundle_usage);
This re-indentation is an accident, isn't it?
-- Hannes
^ permalink raw reply
* What's cooking in git.git (Sep 2009, #04; Wed, 16)
From: Junio C Hamano @ 2009-09-17 6:12 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with '-' are
only in 'pu' while commits prefixed with '+' are in 'next'. The ones
marked with '.' do not appear in any of the integration branches, but I am
still holding onto them.
In 1.7.0, we plan to correct handful of warts in the interfaces everybody
agrees that they were mistakes. The resulting system may not be strictly
backward compatible. Currently planeed changes are:
* refuse push to update the checked out branch in a non-bare repo by
default
Make "git push" into a repository to update the branch that is checked
out fail by default. You can countermand this default by setting a
configuration variable in the receiving repository.
http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007
* refuse push to delete the current branch by default
Make "git push $there :$killed" to delete the branch that is pointed at
by its HEAD fail by default. You can countermand this default by
setting a configuration variable in the receiving repository.
http://thread.gmane.org/gmane.comp.version-control.git/108862/focus=108936
* git-send-email won't make deep threads by default
Many people said that by default when sending more than 2 patches the
threading git-send-email makes by default is hard to read, and they
prefer the default be one cover letter and each patch as a direct
follow-up to the cover letter. You can countermand this by setting a
configuration variable.
http://article.gmane.org/gmane.comp.version-control.git/109790
* git-status won't be "git-commit --dry-run" anymore
http://thread.gmane.org/gmane.comp.version-control.git/125989/focus=125993
* "git-diff -w --exit-code" will exit success if only differences it
found are whitespace changes that are stripped away from the output.
http://thread.gmane.org/gmane.comp.version-control.git/119731/focus=119751
We are in pre-release feature freeze. 'next' will hold topics meant for
1.6.6 and 1.7.0.
Except for possibly gfi-options series from Sverre, and updates to
subsystems (svn, gitk, gui, and gitweb) may still need to be merged in,
but otherwise 'master' is ready for -rc2. I am still hoping that I can
tag the final before I take a vacation starting on 24th for a week, but we
may have to give the final -rc a week to shake out any possible last
minute regressions and release 1.6.5 at the beginning of next month.
--------------------------------------------------
[Graduated to "master"]
* rc/maint-http-no-head-pack-check (2009-09-14) 2 commits.
+ http.c: avoid freeing an uninitialized pointer
+ http.c: remove verification of remote packs
Graduated to master and maint but then needed a small fixup.
--------------------------------------------------
[New Topics]
* jc/maint-blank-at-eof (2009-09-15) 0 commits.
(this branch uses jc/maint-1.6.0-blank-at-eof.)
The series does not have a commit of its own but is a preparation for
merging the original jc/1.6.0-maint-blank-at-eof topic to 'maint' and then
'master'. It is a fix for longstanding bug and 1.6.5 will likely to ship
without this topic.
--------------------------------------------------
[Stalled]
* je/send-email-no-subject (2009-08-05) 1 commit
(merged to 'next' on 2009-08-30 at b6455c2)
+ send-email: confirm on empty mail subjects
The existing tests to covers the positive case (i.e. as long as the user
says "yes" to the "do you really want to send this message that lacks
subject", the message is sent) of this feature, but the feature itself
needs its own test to verify the negative case (i.e. does it correctly
stop if the user says "no"?)
* jh/cvs-helper (2009-08-18) 8 commits
- More fixes to the git-remote-cvs installation procedure
- Fix the Makefile-generated path to the git_remote_cvs package in git-remote-cvs
- Add simple selftests of git-remote-cvs functionality
- git-remote-cvs: Remote helper program for CVS repositories
- 2/2: Add Python support library for CVS remote helper
- 1/2: Add Python support library for CVS remote helper
- Basic build infrastructure for Python scripts
- Allow helpers to request marks for fast-import
(this branch uses db/vcs-helper-rest.)
Builds on db/vcs-helper. There is a re-roll planned.
* ne/rev-cache (2009-09-07) 7 commits
. support for commit grafts, slight change to general mechanism
. support for path name caching in rev-cache
. full integration of rev-cache into git, completed test suite
. administrative functions for rev-cache, start of integration into git
. support for non-commit object caching in rev-cache
. basic revision cache system, no integration or features
. man page and technical discussion for rev-cache
Replaced but I do not think this is ready for 'pu' yet.
--------------------------------------------------
[Cooking]
* db/vcs-helper-rest (2009-09-03) 6 commits
- Allow helpers to report in "list" command that the ref is unchanged
- Add support for "import" helper command
- Add a config option for remotes to specify a foreign vcs
- Allow programs to not depend on remotes having urls
- Allow fetch to modify refs
- Use a function to determine whether a remote is valid
(this branch is used by jh/cvs-helper.)
This holds the remainder of the db/vcs-helper topic that has already
merged for 1.6.5.
* jh/notes (2009-09-12) 13 commits
- Selftests verifying semantics when loading notes trees with various fanouts
- Teach the notes lookup code to parse notes trees with various fanout schemes
- notes.[ch] fixup: avoid old-style declaration
- Teach notes code to free its internal data structures on request.
- Add '%N'-format for pretty-printing commit notes
- Add flags to get_commit_notes() to control the format of the note string
- t3302-notes-index-expensive: Speed up create_repo()
- fast-import: Add support for importing commit notes
- Teach "-m <msg>" and "-F <file>" to "git notes edit"
- Add an expensive test for git-notes
- Speed up git notes lookup
- Add a script to edit/inspect notes
- Introduce commit notes
(this branch uses sr/gfi-options.)
Rerolled and queued.
* jn/gitweb-show-size (2009-09-07) 1 commit
- gitweb: Add 'show-sizes' feature to show blob sizes in tree view
* lt/maint-traverse-trees-fix (2009-09-06) 1 commit.
- Prepare 'traverse_trees()' for D/F conflict lookahead
Beginning of the fix to a rather nasty longstanding issue of merging trees
with ("a" "a-b"), ("a/b" "a-b") and just ("a-b"), but my reading of it is
that it is just the first step to demonstrate one-entry lookahead and not
a full solution yet.
I started writing a replacement series but the progress is a bit slower
than I would have liked.
* jc/maint-1.6.0-blank-at-eof (2009-09-14) 15 commits.
(merged to 'next' on 2009-09-15 at 9cbfa00)
+ diff -B: colour whitespace errors
+ diff.c: emit_add_line() takes only the rest of the line
+ diff.c: split emit_line() from the first char and the rest of the line
+ diff.c: shuffling code around
+ diff --whitespace: fix blank lines at end
(merged to 'next' on 2009-09-07 at 165dc3c)
+ core.whitespace: split trailing-space into blank-at-{eol,eof}
+ diff --color: color blank-at-eof
+ diff --whitespace=warn/error: fix blank-at-eof check
+ diff --whitespace=warn/error: obey blank-at-eof
+ diff.c: the builtin_diff() deals with only two-file comparison
+ apply --whitespace: warn blank but not necessarily empty lines at EOF
+ apply --whitespace=warn/error: diagnose blank at EOF
+ apply.c: split check_whitespace() into two
+ apply --whitespace=fix: detect new blank lines at eof correctly
+ apply --whitespace=fix: fix handling of blank lines at the eof
(this branch is used by jc/maint-blank-at-eof.)
This is a fix for an ancient bug (or inconsistent set of features); the
topic is based on an ancient codebase and is designed to be merged
upwards. jc/maint-blank-at-eof serves that purpose.
Will not be in 1.6.5.
* jn/gitweb-blame (2009-09-01) 5 commits
- gitweb: Minify gitweb.js if JSMIN is defined
- gitweb: Create links leading to 'blame_incremental' using JavaScript
(merged to 'next' on 2009-09-07 at 3622199)
+ gitweb: Colorize 'blame_incremental' view during processing
+ gitweb: Incremental blame (using JavaScript)
+ gitweb: Add optional "time to generate page" info in footer
Ajax-y blame.
* sr/gfi-options (2009-09-06) 6 commits
(merged to 'next' on 2009-09-07 at 5f6b0ff)
+ fast-import: test the new option command
+ fast-import: add option command
+ fast-import: test the new feature command
+ fast-import: add feature command
+ fast-import: put marks reading in it's own function
+ fast-import: put option parsing code in separate functions
(this branch is used by jh/notes.)
Ping?
* nd/sparse (2009-08-20) 19 commits
- sparse checkout: inhibit empty worktree
- Add tests for sparse checkout
- read-tree: add --no-sparse-checkout to disable sparse checkout support
- unpack-trees(): ignore worktree check outside checkout area
- unpack_trees(): apply $GIT_DIR/info/sparse-checkout to the final index
- unpack-trees(): "enable" sparse checkout and load $GIT_DIR/info/sparse-checkout
- unpack-trees.c: generalize verify_* functions
- unpack-trees(): add CE_WT_REMOVE to remove on worktree alone
- Introduce "sparse checkout"
- dir.c: export excluded_1() and add_excludes_from_file_1()
- excluded_1(): support exclude files in index
- unpack-trees(): carry skip-worktree bit over in merged_entry()
- Read .gitignore from index if it is skip-worktree
- Avoid writing to buffer in add_excludes_from_file_1()
- Teach Git to respect skip-worktree bit (writing part)
- Teach Git to respect skip-worktree bit (reading part)
- Introduce "skip-worktree" bit in index, teach Git to get/set this bit
- Add test-index-version
- update-index: refactor mark_valid() in preparation for new options
--------------------------------------------------
[For 1.7.0]
* jk/1.7.0-status (2009-09-05) 5 commits
- docs: note that status configuration affects only long format
(merged to 'next' on 2009-09-07 at 8a7c563)
+ commit: support alternate status formats
+ status: add --porcelain output format
+ status: refactor format option parsing
+ status: refactor short-mode printing to its own function
(this branch uses jc/1.7.0-status.)
Gives the --short output format to post 1.7.0 "git commit --dry-run" that
is similar to that of post 1.7.0 "git status".
* jc/1.7.0-status (2009-09-05) 4 commits
(merged to 'next' on 2009-09-06 at 19d4beb)
+ status: typo fix in usage
(merged to 'next' on 2009-08-22 at b3507bb)
+ git status: not "commit --dry-run" anymore
+ git stat -s: short status output
+ git stat: the beginning of "status that is not a dry-run of commit"
(this branch is used by jk/1.7.0-status.)
With this, "git status" is no longer "git commit --dry-run".
* jc/1.7.0-send-email-no-thread-default (2009-08-22) 1 commit
(merged to 'next' on 2009-08-22 at 5106de8)
+ send-email: make --no-chain-reply-to the default
* jc/1.7.0-diff-whitespace-only-status (2009-08-30) 4 commits.
(merged to 'next' on 2009-08-30 at 0623572)
+ diff.c: fix typoes in comments
(merged to 'next' on 2009-08-27 at 81fb2bd)
+ Make test case number unique
(merged to 'next' on 2009-08-02 at 9c08420)
+ diff: Rename QUIET internal option to QUICK
+ diff: change semantics of "ignore whitespace" options
This changes exit code from "git diff --ignore-whitespace" and friends
when there is no actual output. It is a backward incompatible change, but
we could argue that it is a bugfix.
* jc/1.7.0-push-safety (2009-02-09) 2 commits
(merged to 'next' on 2009-08-02 at 38b82fe)
+ Refuse deleting the current branch via push
+ Refuse updating the current branch in a non-bare repository via push
--------------------------------------------------
[I have been too busy to purge these]
* jc/log-tz (2009-03-03) 1 commit.
- Allow --date=local --date=other-format to work as expected
Maybe some people care about this. I dunno.
* jc/mailinfo-remove-brackets (2009-07-15) 1 commit.
- mailinfo: -b option keeps [bracketed] strings that is not a [PATCH] marker
Maybe some people care about this. I dunno.
* lt/read-directory (2009-05-15) 3 commits.
. Add initial support for pathname conversion to UTF-8
. read_directory(): infrastructure for pathname character set conversion
. Add 'fill_directory()' helper function for directory traversal
^ permalink raw reply
* Re: [PATCH v3 3/4] reset: add option "--merge-safe" to "git reset"
From: Johannes Sixt @ 2009-09-17 6:38 UTC (permalink / raw)
To: Junio C Hamano, Christian Couder
Cc: git, Johannes Schindelin, Stephan Beyer, Daniel Barkalow,
Jakub Narebski, Linus Torvalds
In-Reply-To: <7vk4zykv7o.fsf@alter.siamese.dyndns.org>
Junio C Hamano schrieb:
> As we established in the previous round, this is _different_ from --merge,
> but *not* in the sense that --merge is more dangerous and users should be
> using this new option instead, but in the sense that --merge perfectly
> works well for its intended use case, and this new option triggers a mode
> of operation that is meant to be used in a completely different use case,
> which is unspecified in this series without documentation.
>
> In that light, is --merge-safe still a good name for the option, or merely
> a misleading one?
Do I understand this correctly?
(1) The intended use-case of --merge is to "reset _a_ merge".
(2) The intended use-case of --merge-safe is to point the branch head to a
different commit, but to carry the changes that currently are in the index
and wd over to the new commit, similar to checkout --merge.
I had mistaken that --merge actually performs (2) because of the striking
similarity of the option's name to checkout's --merge. So, IMHO, whatever
the new option is named that performs (2) - it introduces an
inconsistency, because --merge is already taken.
-- Hannes
^ permalink raw reply
* Re: git workflow for fully distributed mini-teams
From: Rustom Mody @ 2009-09-17 7:03 UTC (permalink / raw)
To: Git Mailing List
In-Reply-To: <20090916164356.GB24893@vidovic>
Rustom Mody wrote:
> By fully distributed I mean theres no central repo -- not for pushing
> or even pulling; all communication is by email.
> By mini-team I mean: Not more than 5 programmers.
On Wed, Sep 16, 2009 at 10:13 PM, Nicolas Sebrecht <nicolas.s.dev@gmx.fr> wrote:
>
>
> Also, I see a duplication of the same work for all the developers in a
> team: "merge my topics with topics from others". This could be solved
> with one more common repository wich could stand as a "virtual
> maintainer repository" where each developer could release any topic.
> Topics that don't need any more work would have to be merged in a
> dedicated public branch ("next"?) for testing, and topics that aren't
> good enough into another dedicated branch ("pu"?). So, each developer
> would have to push publishable merges into this repository. This way,
> everyone could use the merges done by another developer (by doing a
> fetch and rebasing of his current work on top of it).
Push? Fetch? How without a common repo? [Sorry if this is totally noob!]
>
> Notice that this is all about "everybody uses the same base for his
> current work" (to avoid per-developer scratch on merges) and "don't let
> everyone do the same work on his own" (to avoid duplicate work).
>
>> What about checkpointing and restoring from botches?
>
> I think this is be easily doable (against your described workflow) with
> good conventions in branch names. Topics like "pending-topicA",
> "pending-topicB", etc that would have to be merged (using a script) into
> a "all pending topics" branch should do what you want, no? Restoring
> from botches would mean removing the crappy branch and re-execute the
> script.
I am really concerned about things like:
A commited something on the B branch, received a patch from B. That
patch did not apply (or worse it applied -- on top of A's!)
So ideally there should be an option that says (when A is on B branch
and tries to commit) "Sorry buddy -- No commits here!"
^ permalink raw reply
* Re: [PATCH v3 3/4] reset: add option "--merge-safe" to "git reset"
From: Junio C Hamano @ 2009-09-17 7:07 UTC (permalink / raw)
To: Johannes Sixt
Cc: Christian Couder, git, Johannes Schindelin, Stephan Beyer,
Daniel Barkalow, Jakub Narebski, Linus Torvalds
In-Reply-To: <4AB1D957.20902@viscovery.net>
Johannes Sixt <j.sixt@viscovery.net> writes:
> Junio C Hamano schrieb:
>> As we established in the previous round, this is _different_ from --merge,
>> but *not* in the sense that --merge is more dangerous and users should be
>> using this new option instead, but in the sense that --merge perfectly
>> works well for its intended use case, and this new option triggers a mode
>> of operation that is meant to be used in a completely different use case,
>> which is unspecified in this series without documentation.
>>
>> In that light, is --merge-safe still a good name for the option, or merely
>> a misleading one?
>
> Do I understand this correctly?
>
> (1) The intended use-case of --merge is to "reset _a_ merge".
See my review comment for the previous round where I described the
intended use case of "reset --merge" and explained why discarding the
changes to the index is _the right thing_. It is to throw away the
changes that was done to your index by an either completed or conflicted
merge.
> (2) The intended use-case of --merge-safe is to point the branch head to a
> different commit, but to carry the changes that currently are in the index
> and wd over to the new commit, similar to checkout --merge.
I have _no_ idea what the intended use-case of --merge-safe is, and that
was why I asked Christian for clarification in the previous round. The
answer was still not clear enough so I pointed out --merge-safe could be
still doing a wrong thing even in _his_ use-case.
^ permalink raw reply
* Re: [PATCH 04/15] Set _O_BINARY as default fmode for both MinGW and MSVC
From: Johannes Sixt @ 2009-09-17 7:11 UTC (permalink / raw)
To: Alexey Borzenkov
Cc: Marius Storm-Olsen, git, Johannes.Schindelin, msysgit, gitster,
j6t, lznuaa, raa.lkml, Marius Storm-Olsen
In-Reply-To: <e2480c70909161300o3db4b416k8f33ccce2f987c55@mail.gmail.com>
Alexey Borzenkov schrieb:
> Searching which executables set _fmode and which don't I found the
> culprit. test-genrandom.c didn't include git-compat-util.h, so mingw.h
> was never included. This caused different random data to be generated,
> and as it seems more importantly, of different sizes. Can be fixed
> with this patch:
>
> diff --git a/test-genrandom.c b/test-genrandom.c
> index 8ad276d..b3c28d9 100644
> --- a/test-genrandom.c
> +++ b/test-genrandom.c
> @@ -4,8 +4,7 @@
> * Copyright (C) 2007 by Nicolas Pitre, licensed under the GPL version 2.
> */
>
> -#include <stdio.h>
> -#include <stdlib.h>
> +#include "git-compat-util.h"
>
> int main(int argc, char *argv[])
> {
Thanks for digging this out. With this change, the t5302 passes again.
I verified that the SHA1s that are generated with this fix are identical
to those that are generated on Linux. (And without this fix they are
different.)
Just for the records: The reason why including git-compat-util.h was not
necessary before 04/15 is that test-genrandom is linked against libgit.a.
This way the startup code had picked up the definition of _CRT_fmode from
mingw.c that is initialized to _O_BINARY. After the original 04/15 this
symbol was not present anymore in libgit.a, and the default (text mode)
was used. And with this fix, main() is overridden to explicitly set the
mode of stdout to _O_BINARY.
-- Hannes
^ permalink raw reply
* Re: [RFC/PATCH v2] fetch: Speed up fetch by rewriting find_non_local_tags
From: Johan Herland @ 2009-09-17 7:13 UTC (permalink / raw)
To: Julian Phillips; +Cc: git, Junio C Hamano
In-Reply-To: <alpine.LNX.2.00.0909170227160.15719@reaper.quantumfyre.co.uk>
On Thursday 17 September 2009, Julian Phillips wrote:
> On Thu, 17 Sep 2009, Julian Phillips wrote:
> > On Wed, 16 Sep 2009, Junio C Hamano wrote:
> >> I am just curious. How would a "just one item lookbehind" code
> >> perform compared to this one?
> >
> > The code you wrote ealier is almost the same as the string_list
> > version, ~ 4.3s, so very marginally slower but a lot less code change.
> > Personally I'd be happy with any of the three, so long as I don't have
> > to wait 30s to find out that nothing's happened at $dayjob anymore ;)
>
> FWIW: I've Just modified my v2 patch to make use of the requirement that
> the peeled ref immediately follow the base ref, and it's now ~4.1s and
> should use less memory than the original too. I won't bother posting it
> unless someone thinks it worth it though.
It's worth it. :)
...Johan
--
Johan Herland, <johan@herland.net>
www.herland.net
^ permalink raw reply
* [PATCH] cvs: initialize empty password
From: Clemens Buchacher @ 2009-09-17 7:21 UTC (permalink / raw)
To: git; +Cc: Junio C Hamano, Dirk Hörner, Pascal Obry
If we do not read a password from the command line, and there are no
passwords stored in .cvspass, we have to initialize the password with
just "A".
This fixes a regression introduced by 3fb9d582 (Do not scramble
password read from .cvspass).
Signed-off-by: Clemens Buchacher <drizzd@aon.at>
---
git-cvsimport.perl | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/git-cvsimport.perl b/git-cvsimport.perl
index d741115..1ad20ac 100755
--- a/git-cvsimport.perl
+++ b/git-cvsimport.perl
@@ -253,6 +253,7 @@ sub conn {
}
}
};
+ $pass = "A" unless $pass;
}
my ($s, $rep);
--
1.6.5.rc0
^ permalink raw reply related
* Re: [PATCH v3 3/4] reset: add option "--merge-safe" to "git reset"
From: Johannes Sixt @ 2009-09-17 7:24 UTC (permalink / raw)
To: Junio C Hamano, Christian Couder
Cc: git, Johannes Schindelin, Stephan Beyer, Daniel Barkalow,
Jakub Narebski, Linus Torvalds
In-Reply-To: <7vr5u6jbgk.fsf@alter.siamese.dyndns.org>
Junio C Hamano schrieb:
> Johannes Sixt <j.sixt@viscovery.net> writes:
>> Junio C Hamano schrieb:
>> (2) The intended use-case of --merge-safe is to point the branch head to a
>> different commit, but to carry the changes that currently are in the index
>> and wd over to the new commit, similar to checkout --merge.
This is actually an operation that I need quite often, but I can do it
only by way of git stash.
Clarification: I did not say that I actually meant to carry *only* the
index and wd changes to the new commit. That is, the operation I have in
mind can roughly be done in terms of
$ git stash
$ git reset --hard $target
$ git stash pop
> I have _no_ idea what the intended use-case of --merge-safe is, and that
> was why I asked Christian for clarification in the previous round. The
> answer was still not clear enough so I pointed out --merge-safe could be
> still doing a wrong thing even in _his_ use-case.
Reading Christian in 200909170554.49416.chriscool@tuxfamily.org, I think
this *is* his use-case? Christian?
-- Hannes
^ permalink raw reply
* Re: [PATCH 04/15] Set _O_BINARY as default fmode for both MinGW and MSVC
From: Junio C Hamano @ 2009-09-17 7:25 UTC (permalink / raw)
To: Johannes Sixt
Cc: Alexey Borzenkov, Marius Storm-Olsen, git, Johannes.Schindelin,
msysgit, gitster, j6t, lznuaa, raa.lkml, Marius Storm-Olsen
In-Reply-To: <4AB1E118.70504@viscovery.net>
Johannes Sixt <j.sixt@viscovery.net> writes:
> Just for the records: The reason why including git-compat-util.h was not
> necessary before 04/15 is that test-genrandom is linked against libgit.a.
> This way the startup code had picked up the definition of _CRT_fmode from
> mingw.c that is initialized to _O_BINARY. After the original 04/15 this
> symbol was not present anymore in libgit.a, and the default (text mode)
> was used. And with this fix, main() is overridden to explicitly set the
> mode of stdout to _O_BINARY.
Beautiful. I think it is worth mentioning some of the above in the commit
log message.
Thanks.
^ permalink raw reply
* Re: [PATCH 04/15] Set _O_BINARY as default fmode for both MinGW and MSVC
From: Marius Storm-Olsen @ 2009-09-17 7:27 UTC (permalink / raw)
To: Johannes Sixt
Cc: Alexey Borzenkov, git, Johannes.Schindelin, msysgit, gitster, j6t,
lznuaa, raa.lkml, Marius Storm-Olsen
In-Reply-To: <4AB1E118.70504@viscovery.net>
Johannes Sixt said the following on 17.09.2009 09:11:
> Alexey Borzenkov schrieb:
>> Searching which executables set _fmode and which don't I found the
>> culprit. test-genrandom.c didn't include git-compat-util.h, so mingw.h
>> was never included. This caused different random data to be generated,
>> and as it seems more importantly, of different sizes. Can be fixed
>> with this patch:
>>
>> diff --git a/test-genrandom.c b/test-genrandom.c
>> index 8ad276d..b3c28d9 100644
>> --- a/test-genrandom.c
>> +++ b/test-genrandom.c
>> @@ -4,8 +4,7 @@
>> * Copyright (C) 2007 by Nicolas Pitre, licensed under the GPL version 2.
>> */
>>
>> -#include <stdio.h>
>> -#include <stdlib.h>
>> +#include "git-compat-util.h"
>>
>> int main(int argc, char *argv[])
>> {
>
> Thanks for digging this out. With this change, the t5302 passes again.
Yup, are you ok with squashing this hunk into the patch then?
--
.marius
^ permalink raw reply
* Re: git workflow for fully distributed mini-teams
From: Johannes Sixt @ 2009-09-17 7:28 UTC (permalink / raw)
To: Rustom Mody; +Cc: Git Mailing List
In-Reply-To: <f46c52560909170003l61a2e1a3kf62c94ffd7ed9710@mail.gmail.com>
Rustom Mody schrieb:
> I am really concerned about things like:
>
> A commited something on the B branch, received a patch from B. That
> patch did not apply (or worse it applied -- on top of A's!)
> So ideally there should be an option that says (when A is on B branch
> and tries to commit) "Sorry buddy -- No commits here!"
I think the most important thing would be that you send bundles around,
not patches, so that you all can work with and talk about unique object names.
-- Hannes
^ permalink raw reply
* Re: [PATCH 04/15] Set _O_BINARY as default fmode for both MinGW and MSVC
From: Johannes Sixt @ 2009-09-17 7:36 UTC (permalink / raw)
To: Marius Storm-Olsen
Cc: Alexey Borzenkov, git, Johannes.Schindelin, msysgit, gitster, j6t,
lznuaa, raa.lkml, Marius Storm-Olsen
In-Reply-To: <4AB1E4C5.80102@gmail.com>
Marius Storm-Olsen schrieb:
> Yup, are you ok with squashing this hunk into the patch then?
Of course; with some extra words in the commit message.
-- Hannes
^ permalink raw reply
* [RFC/PATCH v3] fetch: Speed up fetch by rewriting find_non_local_tags
From: Julian Phillips @ 2009-09-17 7:33 UTC (permalink / raw)
To: Johan Herland; +Cc: git, Junio C Hamano
In-Reply-To: <200909170913.03639.johan@herland.net>
When trying to get a list of remote tags to see if we need to fetch
any we were doing a linear search for the matching tag ref for the
tag^{} commit entries. This proves to be incredibly slow for large
numbers of tags. Rewrite the function so that we build up a
string_list of refs to fetch and then process that instead.
As an extreme example, for a repository with 50000 tags (and just a
single commit on a single branch), a fetch that does nothing goes from
~1m50s to ~4.1s.
Signed-off-by: Julian Phillips <julian@quantumfyre.co.uk>
---
Ok, so here it is ...
Sometimes I forget just much we git users value our time and resources.
;)
builtin-fetch.c | 98 ++++++++++++++++++++++++++++++++++++------------------
1 files changed, 65 insertions(+), 33 deletions(-)
diff --git a/builtin-fetch.c b/builtin-fetch.c
index cb48c57..acb08e4 100644
--- a/builtin-fetch.c
+++ b/builtin-fetch.c
@@ -504,57 +504,89 @@ static int will_fetch(struct ref **head, const unsigned char *sha1)
return 0;
}
+struct tag_data {
+ struct ref **head;
+ struct ref ***tail;
+};
+
+static int add_to_tail(struct string_list_item *item, void *cb_data)
+{
+ struct tag_data *data = (struct tag_data *)cb_data;
+ struct ref *rm = NULL;
+
+ /* We have already decided to ignore this item */
+ if (!item->util)
+ return 0;
+
+ rm = alloc_ref(item->string);
+ rm->peer_ref = alloc_ref(item->string);
+ hashcpy(rm->old_sha1, item->util);
+
+ **data->tail = rm;
+ *data->tail = &rm->next;
+
+ return 0;
+}
+
static void find_non_local_tags(struct transport *transport,
struct ref **head,
struct ref ***tail)
{
struct string_list existing_refs = { NULL, 0, 0, 0 };
- struct string_list new_refs = { NULL, 0, 0, 1 };
- char *ref_name;
- int ref_name_len;
- const unsigned char *ref_sha1;
- const struct ref *tag_ref;
- struct ref *rm = NULL;
+ struct string_list remote_refs = { NULL, 0, 0, 0 };
+ struct tag_data data = {head, tail};
const struct ref *ref;
+ struct string_list_item *item = NULL;
for_each_ref(add_existing, &existing_refs);
for (ref = transport_get_remote_refs(transport); ref; ref = ref->next) {
if (prefixcmp(ref->name, "refs/tags"))
continue;
- ref_name = xstrdup(ref->name);
- ref_name_len = strlen(ref_name);
- ref_sha1 = ref->old_sha1;
-
- if (!strcmp(ref_name + ref_name_len - 3, "^{}")) {
- ref_name[ref_name_len - 3] = 0;
- tag_ref = transport_get_remote_refs(transport);
- while (tag_ref) {
- if (!strcmp(tag_ref->name, ref_name)) {
- ref_sha1 = tag_ref->old_sha1;
- break;
- }
- tag_ref = tag_ref->next;
- }
+ /* the peeled ref always follows the matching base ref, so if we
+ * see a peeled ref that we don't want to fetch then we can mark
+ * the ref entry in the list as one to ignore by setting util to
+ * NULL. */
+ if (!strcmp(ref->name + strlen(ref->name) - 3, "^{}")) {
+ if (item && !has_sha1_file(ref->old_sha1) &&
+ !will_fetch(head, ref->old_sha1) &&
+ !has_sha1_file(item->util) &&
+ !will_fetch(head, item->util) )
+ item->util = NULL;
+ item = NULL;
+ continue;
}
- if (!string_list_has_string(&existing_refs, ref_name) &&
- !string_list_has_string(&new_refs, ref_name) &&
- (has_sha1_file(ref->old_sha1) ||
- will_fetch(head, ref->old_sha1))) {
- string_list_insert(ref_name, &new_refs);
+ /* If item is non-NULL here, then we previously saw a ref not
+ * followed by a peeled reference, so we need to check if it is
+ * a lightweight tag that we want to fetch */
+ if (item && !has_sha1_file(item->util) &&
+ !will_fetch(head, item->util) )
+ item->util = NULL;
- rm = alloc_ref(ref_name);
- rm->peer_ref = alloc_ref(ref_name);
- hashcpy(rm->old_sha1, ref_sha1);
+ item = NULL;
- **tail = rm;
- *tail = &rm->next;
- }
- free(ref_name);
+ /* skip duplicates and refs that we already have */
+ if (string_list_has_string(&remote_refs, ref->name) ||
+ string_list_has_string(&existing_refs, ref->name))
+ continue;
+
+ item = string_list_insert(ref->name, &remote_refs);
+ item->util = (void *)ref->old_sha1;
}
string_list_clear(&existing_refs, 0);
- string_list_clear(&new_refs, 0);
+
+ /* We may have a final lightweight tag that needs to be checked to see
+ * if it needs fetching. */
+ if (item && !has_sha1_file(item->util) &&
+ !will_fetch(head, item->util) )
+ item->util = NULL;
+
+ /* For all the tags in the remote_refs string list, call add_to_tail to
+ * add them to the list of refs to be fetched */
+ for_each_string_list(add_to_tail, &remote_refs, &data);
+
+ string_list_clear(&remote_refs, 0);
}
static void check_not_current_branch(struct ref *ref_map)
--
1.6.4.2
^ permalink raw reply related
* Re: [PATCH 04/15] Set _O_BINARY as default fmode for both MinGW and MSVC
From: Marius Storm-Olsen @ 2009-09-17 7:53 UTC (permalink / raw)
To: Johannes Sixt
Cc: Alexey Borzenkov, git, Johannes.Schindelin, msysgit, gitster, j6t,
lznuaa, raa.lkml, Marius Storm-Olsen
In-Reply-To: <4AB1E6E4.1040100@viscovery.net>
[-- Attachment #1: Type: text/plain, Size: 641 bytes --]
Johannes Sixt said the following on 17.09.2009 09:36:
> Marius Storm-Olsen schrieb:
>> Yup, are you ok with squashing this hunk into the patch then?
>
> Of course; with some extra words in the commit message.
Great. Hold tight, I'll resend an updated version.
BTW, I ran all the tests (make /k test) before and after the
whole series, with msysgit 'devel' branch + plain git.git 'next',
and it turns out that 2 more tests pass after this series :)
Before:
fixed 4
success 4017
failed 380
broken 9
total 4524
After:
fixed 4
success 4019
failed 378
broken 9
total 4524
Both complete logs attached in 7zip format.
--
.marius
[-- Attachment #2: testresults.7z --]
[-- Type: application/octet-stream, Size: 44812 bytes --]
^ permalink raw reply
* [PATCH 04/15] Set _O_BINARY as default fmode for both MinGW and MSVC
From: Marius Storm-Olsen @ 2009-09-17 8:02 UTC (permalink / raw)
To: git
Cc: Johannes.Schindelin, msysgit, gitster, j6t, lznuaa, raa.lkml,
snaury, Marius Storm-Olsen
In-Reply-To: <929c5a34cd2621af24bcda7e47ff2e76b51c2e09.1253088099.git.mstormo@gmail.com>
MinGW set the _CRT_fmode to set both the default fmode and
_O_BINARY on stdin/stdout/stderr. Rather use the main()
define in mingw.h to set this for both MinGW and MSVC.
This will ensure that a MinGW and MSVC build will handle
input and output identically.
Alexey Borzenkov:
Include git-compat-util.h from the test-genrandom.c so
that the application also will use the main() define,
and thus the stdout mode is set correctly and generated
data stays the same.
Johannes Sixt:
Before, since the test-genrandom application would link
against libgit.a, the MinGW process initialization code
would pick up the definition of _CRT_fmode from mingw.c
that is initialized to _O_BINARY. After this patch,
however, the _CRT_fmode symbol is no longer present in
libgit.a, so MinGWs process initialization code will not
set the correct std(in|out|err) mode. So, the include is
needed to override main() and explicitly set the mode.
Signed-off-by: Marius Storm-Olsen <mstormo@gmail.com>
---
compat/mingw.c | 2 --
compat/mingw.h | 5 +++++
test-genrandom.c | 1 +
3 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/compat/mingw.c b/compat/mingw.c
index 5478b74..5a8fae8 100644
--- a/compat/mingw.c
+++ b/compat/mingw.c
@@ -3,8 +3,6 @@
#include <conio.h>
#include "../strbuf.h"
-unsigned int _CRT_fmode = _O_BINARY;
-
static int err_win_to_posix(DWORD winerr)
{
int error = ENOSYS;
diff --git a/compat/mingw.h b/compat/mingw.h
index c43917c..bcd23b0 100644
--- a/compat/mingw.h
+++ b/compat/mingw.h
@@ -227,12 +227,17 @@ void free_environ(char **env);
/*
* A replacement of main() that ensures that argv[0] has a path
+ * and that default fmode and std(in|out|err) are in binary mode
*/
#define main(c,v) dummy_decl_mingw_main(); \
static int mingw_main(); \
int main(int argc, const char **argv) \
{ \
+ _fmode = _O_BINARY; \
+ _setmode(_fileno(stdin), _O_BINARY); \
+ _setmode(_fileno(stdout), _O_BINARY); \
+ _setmode(_fileno(stderr), _O_BINARY); \
argv[0] = xstrdup(_pgmptr); \
return mingw_main(argc, argv); \
} \
diff --git a/test-genrandom.c b/test-genrandom.c
index 8ad276d..5849599 100644
--- a/test-genrandom.c
+++ b/test-genrandom.c
@@ -6,6 +6,7 @@
#include <stdio.h>
#include <stdlib.h>
+#include "git-compat-util.h"
int main(int argc, char *argv[])
{
--
1.6.2.1.418.g33d56.dirty
^ permalink raw reply related
* Re: [PATCH 04/15] Set _O_BINARY as default fmode for both MinGW and MSVC
From: Johannes Sixt @ 2009-09-17 8:10 UTC (permalink / raw)
To: Marius Storm-Olsen
Cc: Alexey Borzenkov, git, Johannes.Schindelin, msysgit, gitster, j6t,
lznuaa, raa.lkml, Marius Storm-Olsen
In-Reply-To: <4AB1EB02.2090308@gmail.com>
Marius Storm-Olsen schrieb:
> BTW, I ran all the tests (make /k test) before and after the
> whole series, with msysgit 'devel' branch + plain git.git 'next',
> and it turns out that 2 more tests pass after this series :)
Sorry to disappoint you: these 2 tests only passed by chance. For a
work-around see e95a73ef in mingw.git (it papers over an undetected
racily-clean index).
-- Hannes
^ permalink raw reply
* Re: [PATCH 04/15] Set _O_BINARY as default fmode for both MinGW and MSVC
From: Marius Storm-Olsen @ 2009-09-17 8:14 UTC (permalink / raw)
To: Johannes Sixt
Cc: Alexey Borzenkov, git, Johannes.Schindelin, msysgit, gitster, j6t,
lznuaa, raa.lkml, Marius Storm-Olsen
In-Reply-To: <4AB1EF0E.5010600@viscovery.net>
Johannes Sixt said the following on 17.09.2009 10:10:
> Marius Storm-Olsen schrieb:
>> BTW, I ran all the tests (make /k test) before and after the
>> whole series, with msysgit 'devel' branch + plain git.git 'next',
>> and it turns out that 2 more tests pass after this series :)
>
> Sorry to disappoint you: these 2 tests only passed by chance. For a
> work-around see e95a73ef in mingw.git (it papers over an undetected
> racily-clean index).
Ah, gotcha. Oh well, at least no regressions then, which is also a
good thing :)
--
.marius
^ permalink raw reply
* Re: [PATCH 04/15] Set _O_BINARY as default fmode for both MinGW and MSVC
From: Alexey Borzenkov @ 2009-09-17 8:39 UTC (permalink / raw)
To: Johannes Sixt
Cc: Marius Storm-Olsen, git, Johannes.Schindelin, msysgit, gitster,
j6t, lznuaa, raa.lkml, Marius Storm-Olsen
In-Reply-To: <4AB1EF0E.5010600@viscovery.net>
On Thu, Sep 17, 2009 at 12:10 PM, Johannes Sixt <j.sixt@viscovery.net> wrote:
> Marius Storm-Olsen schrieb:
>> BTW, I ran all the tests (make /k test) before and after the
>> whole series, with msysgit 'devel' branch + plain git.git 'next',
>> and it turns out that 2 more tests pass after this series :)
> Sorry to disappoint you: these 2 tests only passed by chance. For a
> work-around see e95a73ef in mingw.git (it papers over an undetected
> racily-clean index).
Maybe we should just implement nsec for mingw? The code is already almost there:
Converter filetime_to_timespec is available in cygwin.c
Definition of struct timespec and struct stat that uses it can be
borrowed from cygwin's cygwin/stat.h and cygwin/types.h, we could call
it struct mingw_timespec and struct mingw_stat. Then #define timespec
mingw_timespec and #define stat mingw_stat, as well as #define
st_atime (st_atim.tv_sec) and similarly others, just like
cygwin/stat.h does.
Since we already reimplement stat/lstat/fstat it should be relatively
simple and we don't care about usage of mingw's stat.
Do you want me to cook up a patch?
^ permalink raw reply
* Re: [PATCH 04/15] Set _O_BINARY as default fmode for both MinGW and MSVC
From: Marius Storm-Olsen @ 2009-09-17 8:45 UTC (permalink / raw)
To: Alexey Borzenkov
Cc: Johannes Sixt, git, Johannes.Schindelin, msysgit, gitster, j6t,
lznuaa, raa.lkml, Marius Storm-Olsen
In-Reply-To: <e2480c70909170139x9580bb4pcc1ad8e1b93aef17@mail.gmail.com>
Alexey Borzenkov said the following on 17.09.2009 10:39:
> On Thu, Sep 17, 2009 at 12:10 PM, Johannes Sixt <j.sixt@viscovery.net> wrote:
>> Marius Storm-Olsen schrieb:
>>> BTW, I ran all the tests (make /k test) before and after the
>>> whole series, with msysgit 'devel' branch + plain git.git 'next',
>>> and it turns out that 2 more tests pass after this series :)
>> Sorry to disappoint you: these 2 tests only passed by chance. For a
>> work-around see e95a73ef in mingw.git (it papers over an undetected
>> racily-clean index).
>
> Maybe we should just implement nsec for mingw? The code is already almost there:
>
> Converter filetime_to_timespec is available in cygwin.c
> Definition of struct timespec and struct stat that uses it can be
> borrowed from cygwin's cygwin/stat.h and cygwin/types.h, we could call
> it struct mingw_timespec and struct mingw_stat. Then #define timespec
> mingw_timespec and #define stat mingw_stat, as well as #define
> st_atime (st_atim.tv_sec) and similarly others, just like
> cygwin/stat.h does.
> Since we already reimplement stat/lstat/fstat it should be relatively
> simple and we don't care about usage of mingw's stat.
> Do you want me to cook up a patch?
we already override the stat() implementation with our own :)
compat/mingw.h (~174):
/* Use mingw_lstat() instead of lstat()/stat() and
* mingw_fstat() instead of fstat() on Windows.
*/
#define off_t off64_t
#define stat _stati64
#define lseek _lseeki64
int mingw_lstat(const char *file_name, struct stat *buf);
int mingw_fstat(int fd, struct stat *buf);
#define fstat mingw_fstat
#define lstat mingw_lstat
#define _stati64(x,y) mingw_lstat(x,y)
int mingw_utime(const char *file_name, const struct utimbuf *times);
#define utime mingw_utime
See compat/mingw.c for implementation..
--
.marius
^ permalink raw reply
* Re: [PATCH 04/15] Set _O_BINARY as default fmode for both MinGW and MSVC
From: Alexey Borzenkov @ 2009-09-17 8:57 UTC (permalink / raw)
To: Marius Storm-Olsen
Cc: Johannes Sixt, git, Johannes.Schindelin, msysgit, gitster, j6t,
lznuaa, raa.lkml, Marius Storm-Olsen
In-Reply-To: <4AB1F71B.6050004@gmail.com>
On Thu, Sep 17, 2009 at 12:45 PM, Marius Storm-Olsen <mstormo@gmail.com> wrote:
> we already override the stat() implementation with our own :)
Yes, that's why implementing nsec whould be easy. See compat/cygwin.c
(filetime_to_timespec) and git-compat-util.h (#ifdef NO_NSEC).
Currently mingw doesn't support tv_nsec.
^ permalink raw reply
* Re: [PATCH 04/15] Set _O_BINARY as default fmode for both MinGW and MSVC
From: Johannes Sixt @ 2009-09-17 9:03 UTC (permalink / raw)
To: Alexey Borzenkov
Cc: Marius Storm-Olsen, git, Johannes.Schindelin, msysgit, gitster,
j6t, lznuaa, raa.lkml, Marius Storm-Olsen
In-Reply-To: <e2480c70909170139x9580bb4pcc1ad8e1b93aef17@mail.gmail.com>
Alexey Borzenkov schrieb:
> On Thu, Sep 17, 2009 at 12:10 PM, Johannes Sixt <j.sixt@viscovery.net> wrote:
>> Marius Storm-Olsen schrieb:
>>> BTW, I ran all the tests (make /k test) before and after the
>>> whole series, with msysgit 'devel' branch + plain git.git 'next',
>>> and it turns out that 2 more tests pass after this series :)
>> Sorry to disappoint you: these 2 tests only passed by chance. For a
>> work-around see e95a73ef in mingw.git (it papers over an undetected
>> racily-clean index).
>
> Maybe we should just implement nsec for mingw? The code is already almost there:
First thing to do is to understand what is going on: There are other
architectures that do not have nsec and that do *not* have the problem;
why do we have a problem on Windows? If you cannot answer this question,
an nsec solution would still just be "it happens to work", and not "it
works by design".
I think I had analyzed this particular case, and I understood it, but did
not make notes why I found it satisfactory to just paper over the issue,
and today I don't remember anymore. :-/
> Since we already reimplement stat/lstat/fstat it should be relatively
> simple and we don't care about usage of mingw's stat.
Don't forget utime().
> Do you want me to cook up a patch?
I consider an answer to the question "why do we need nsec?" more important.
BTW: t4130-apply-criss-cross-rename.sh fails quite often as well. This
time it is because we fill in st_ino = 0 instead of some useful value. The
test moves files around that happen to have identical sizes. After the
operation, the dirty working tree could be noticed because st_ino differs
from the index. But since we always set it to 0, it is not noticed.
(That's my theory.)
If you make a patch, can you think about this issue as well?
-- Hannes
^ permalink raw reply
* Re: What's cooking in git.git (Sep 2009, #04; Wed, 16)
From: Sverre Rabbelier @ 2009-09-17 9:26 UTC (permalink / raw)
To: Junio C Hamano, Shawn O. Pearce; +Cc: git
In-Reply-To: <7v1vm6kskd.fsf@alter.siamese.dyndns.org>
Heya,
On Thu, Sep 17, 2009 at 08:12, Junio C Hamano <gitster@pobox.com> wrote:
> * sr/gfi-options (2009-09-06) 6 commits
> (merged to 'next' on 2009-09-07 at 5f6b0ff)
> + fast-import: test the new option command
> + fast-import: add option command
> + fast-import: test the new feature command
> + fast-import: add feature command
> + fast-import: put marks reading in it's own function
> + fast-import: put option parsing code in separate functions
> (this branch is used by jh/notes.)
>
> Ping?
I replied to Shawn's comment by asking how he wants to go from here; I
am waiting for him to find time to reply :).
--
Cheers,
Sverre Rabbelier
^ permalink raw reply
* Re: [PATCH 04/15] Set _O_BINARY as default fmode for both MinGW and MSVC
From: Marius Storm-Olsen @ 2009-09-17 9:28 UTC (permalink / raw)
To: Johannes Sixt
Cc: Alexey Borzenkov, git, Johannes.Schindelin, msysgit, gitster, j6t,
lznuaa, raa.lkml, Marius Storm-Olsen
In-Reply-To: <4AB1FB79.5070903@viscovery.net>
Johannes Sixt said the following on 17.09.2009 11:03:
> Alexey Borzenkov schrieb:
>> Do you want me to cook up a patch?
>
> I consider an answer to the question "why do we need nsec?" more important.
>
> BTW: t4130-apply-criss-cross-rename.sh fails quite often as well. This
> time it is because we fill in st_ino = 0 instead of some useful value. The
> test moves files around that happen to have identical sizes. After the
> operation, the dirty working tree could be noticed because st_ino differs
> from the index. But since we always set it to 0, it is not noticed.
> (That's my theory.)
>
> If you make a patch, can you think about this issue as well?
Cygwin version also sets st_ino = 0, so I'm not sure this is the cause
of failure; unless this test also fails there? Does anyone know?
--
.marius
^ permalink raw reply
* [RFC/PATCH] branch: die when calling "git branch [-a|-r] branchname".
From: Matthieu Moy @ 2009-09-17 9:35 UTC (permalink / raw)
To: git; +Cc: Matthieu Moy
Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
---
builtin-branch.c | 7 +++++--
1 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/builtin-branch.c b/builtin-branch.c
index 9f57992..fe11b55 100644
--- a/builtin-branch.c
+++ b/builtin-branch.c
@@ -635,10 +635,13 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
rename_branch(head, argv[0], rename > 1);
else if (rename && (argc == 2))
rename_branch(argv[0], argv[1], rename > 1);
- else if (argc <= 2)
+ else if (argc <= 2) {
+ if (kinds != REF_LOCAL_BRANCH) {
+ die("-a or -r do not make sense with branch name");
+ }
create_branch(head, argv[0], (argc == 2) ? argv[1] : head,
force_create, reflog, track);
- else
+ } else
usage_with_options(builtin_branch_usage, options);
return 0;
--
1.6.5.rc1.11.g2d184.dirty
^ permalink raw reply related
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