* Re: [PATCH] Windows: set gitexecdir = $(bindir)
From: Johannes Sixt @ 2008-07-19 19:31 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git, Steffen Prohaska, Johannes Schindelin
In-Reply-To: <7vmykd238a.fsf@gitster.siamese.dyndns.org>
On Samstag, 19. Juli 2008, Junio C Hamano wrote:
> Johannes Sixt <johannes.sixt@telecom.at> writes:
> > Take as an example 'git pull'.
> >
> > - The first call to git will derive the exec-path
> > $prefix/bin/../libexec/git-core and prepend it to $PATH.
> >
> > - Calls to builtin git commands from inside 'git pull' will then derive
> > the exec-path $prefix/bin/../libexec/git-core/../libexec/git-core, that
> > is $prefix/libexec/libexec/git-core, and prepend it to $PATH as well.
> > That directory does not exist - usually - and it does not hurt. But it
> > feels dirty and potentially dangerous.
>
> You run "git" with an argument "pull". It needs to figure out where
> "git-pull" is, it checks where it came from and adds ../libexec/git-core/.
> Then it runs "git-pull" script.
>
> Then the script may have a call to "git ls-files -u" or "git-merge".
>
> - The former case, "git" again needs to find out where "git-ls-files"
> is.
>
> If "git" is found as bin/git and not as libexec/git-core/git, this
> should be perfectly fine, isn't it? Perhaps we install a duplicate
> copy there by mistake, which is what we need to fix?
Yes, there's libexec/git-core/git. There reason might be that the install
target is simpler to write (to create the hardlinks) just in case $(bindir)
and $(gitexecdir) are not on the same mount.
> - The latter case (our scripts source git-sh-setup so they have libexec
> one in the PATH when they are started) would find "git-merge" directly
> and runs it.
>
> In either case, the programs "git-ls-files" and "git-merge" do not need to
> do the same discovery -- are we giving them enough clues when we run them
> to let them avoid that?
Probably the only clue is the name itself, like Steffen proposed.
I'll see how I can improve my earlier exec-path patch series.
-- Hannes
^ permalink raw reply
* Re: [PATCH] Rename ".dotest/" to ".git/rebase" and ".dotest-merge" to "rebase-merge"
From: Olivier Marin @ 2008-07-19 19:49 UTC (permalink / raw)
To: Junio C Hamano
Cc: Theodore Tso, Nanako Shiraishi, Johannes Schindelin,
René Scharfe, Stephan Beyer, Joe Fiorini, git, Jari Aalto
In-Reply-To: <7viqv5r637.fsf@gitster.siamese.dyndns.org>
Junio C Hamano a écrit :
> Theodore Tso <tytso@mit.edu> writes:
>
>> While you have "git am" open, how about adding an "git am --abort"
>> which nukes the .dotest aka .git/rebase directory, and resets HEAD
>> back to the original position?
>
> This does not seem to have reached the list nor its archives. I cannot
> say I have really looked at it deeply but it may be a good starting
> point. It needs docs ;-)
Thinking about the way "git am" works:
It tries to apply patches even on a dirty tree which makes difficult
to automatically do a "git reset --hard" with --skip or --abort and
forces the user to clean the index by hand if last patch failed with
unmerged files.
So, do some people still use "git am" with a dirty tree or will a
patch that make it work like "git rebase" be accepted?
I think users can use "git stash" and "git stash pop" today. Did I
miss something?
Note: the version that use "git sequencer" seems to work like I want
but I do not know if it is a side effect or not.
Olivier.
^ permalink raw reply
* Re: "error: non-monotonic index" during fresh linux-2.6.git cloning.
From: Evgeniy Polyakov @ 2008-07-19 19:59 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
In-Reply-To: <7v8wvx211n.fsf@gitster.siamese.dyndns.org>
Hi Junio.
On Sat, Jul 19, 2008 at 11:15:16AM -0700, Junio C Hamano (gitster@pobox.com) wrote:
> > The repository you are cloning uses pack idx version #2; 1.4.4.4 predates it
> > by a wide margin.
>
> By the way, Debian folks are very aware of the issue and already has a
> backported material to cut a 1.4.4.5, but I do not know what the release
> schedule for their update is.
>
> Is it an option for you to update to a more modern version from say
> backports.org? Everybody using git for anything serious should be using
> 1.5.3 or newer these days.
It is very development test machine, there is no need to use git at all,
it is just a convenient way to get a needed version via 'git clone; git reset'.
I posted it so it would be stored in archive, that old enough git
version does not work with recent trees, so one should upgrade if this
error occures.
--
Evgeniy Polyakov
^ permalink raw reply
* Re: [PATCH] Rename ".dotest/" to ".git/rebase" and ".dotest-merge" to "rebase-merge"
From: Stephan Beyer @ 2008-07-19 19:59 UTC (permalink / raw)
To: Olivier Marin
Cc: Junio C Hamano, Theodore Tso, Nanako Shiraishi,
Johannes Schindelin, René Scharfe, Joe Fiorini, git,
Jari Aalto
In-Reply-To: <4882454D.2080500@free.fr>
Hi,
Olivier Marin wrote:
> Note: the version that use "git sequencer" seems to work like I want
> but I do not know if it is a side effect or not.
If you mean with "work like I want" that it complains about an unclean
work tree: the check is explicitly done by git-sequencer.
I guess there are situations where you want to apply a patch on a dirty
work tree, e.g. if you fixed some tiny issues so that patches can
apply cleanly.
But I think it does not hurt to commit such tiny changes and perhaps
squash later.
Regards,
Stephan
--
Stephan Beyer <s-beyer@gmx.net>, PGP 0x6EDDD207FCC5040F
^ permalink raw reply
* Re: "error: non-monotonic index" during fresh linux-2.6.git cloning.
From: Evgeniy Polyakov @ 2008-07-19 20:06 UTC (permalink / raw)
To: Petr Baudis; +Cc: git
In-Reply-To: <20080719182014.GD32184@machine.or.cz>
Hi Petr.
On Sat, Jul 19, 2008 at 08:20:14PM +0200, Petr Baudis (pasky@suse.cz) wrote:
> On Sat, Jul 19, 2008 at 09:47:43PM +0400, Evgeniy Polyakov wrote:
> > $ git --version
> > git version 1.4.4.4
> >
> > Fresh 32bit Debian testing.
>
> Are you sure? http://packages.debian.org/testing/git-core says
>
> Package: git-core (1:1.5.6.2-1)
>
> Your sounds more like the Debian stable version.
It is that version indeed:
apt-cache show git-core
...
Version: 1:1.5.6.2-1
...
but it was imported there quite recently, so 'apt-get upgrade' will not
catch up with major version change. 1.5 works ok, I pointed to this
issue, so that resolution for the problem (i.e. upgrade to the more
recent version) could be found in archive.
--
Evgeniy Polyakov
^ permalink raw reply
* Re: [PATCH] Rename ".dotest/" to ".git/rebase" and ".dotest-merge" to "rebase-merge"
From: Olivier Marin @ 2008-07-19 20:25 UTC (permalink / raw)
To: Stephan Beyer
Cc: Junio C Hamano, Theodore Tso, Nanako Shiraishi,
Johannes Schindelin, René Scharfe, Joe Fiorini, git,
Jari Aalto
In-Reply-To: <20080719195944.GB5792@leksak.fem-net>
Stephan Beyer a écrit :
>
> If you mean with "work like I want" that it complains about an unclean
> work tree: the check is explicitly done by git-sequencer.
Yes, I mean: refuse to work if the tree is not clean _and_ --skip
and --abort clean the index/tree for me.
With current git version "git am --skip" refuse to continue with a
message: "Dirty index: cannot apply patches (dirty: ...)", if some
files stay unmerged.
As a user I find --skip and --abort useless^Wpainful to use in this
situation.
> I guess there are situations where you want to apply a patch on a dirty
> work tree, e.g. if you fixed some tiny issues so that patches can
> apply cleanly.
Maybe.
Olivier.
^ permalink raw reply
* Statictics on Git.pm usage in git commands (was: [PATCH 2/3] add new Git::Repo API)
From: Jakub Narebski @ 2008-07-19 20:54 UTC (permalink / raw)
To: Petr Baudis; +Cc: Lea Wiemann, git, John Hawley
In-Reply-To: <20080718164828.GT10151@machine.or.cz>
On Fri, 18 July 2008, Petr Baudis wrote:
> But the experience shows that the pipe interface is actually
> the _most_ used part of the Git Perl API.
This made me curious which parts of Git.pm, the current Git Perl API,
are used most.
Here is some statistics on the usage of Git Perl API among built-in
and contrib commands.
>From git commands in Perl the following include "use Git" in their
sources: git-cvsexportcommit, git-send-email, git-svn, and helper
script git-add--interactive. There are Perl scripts which do not
use Git.pm: git-archimport (which I think should be obsoleted or
moved to contrib), git-cvsimport, git-cvsserver, git-relink. This
means that half of Perl scripts use Git Perl API.
The situation is worse for scripts in 'contrib/'. From those, only
contrib/examples/git-remote.perl uses Git.pm; neither blameview,
continuous, git-import and import-tars in fast-import, setgitperms
and update-paranoid in hooks, stats, nor other Perl scripts in
examples (git-rerere, git-svnimport) include "use Git".
Below there are stats on how different commands from Git.pm are
used in mentioned Perl scripts:
1. git-add--interactive.perl uses Git.pm mainly to access color
configuration: 2 ->get_colorbool, 8 ->get_color, 1 ->config.
It also uses once ->repository() constuctor, and once
->repo_path().
This means that future Git::Config _has_ to have support for
color or colorbool valued configuration values.
2. git-cvsexportcommit.perl uses (besides ->repository() constructor)
only once ->config; so I guess that current interface wrapping
git-config should stay, because parsing whole config for such
situation would be overkill.
What is strange that git-cvsexportcommit.perl defines its own
safe_pipe_capture and xargs_safe_pipe_capture (!), and uses
them, open pipeline, backticks, and system() to call git commands.
3. git-send-email.perl uses 5 config, 2 config_bool, 2 ident_person
(for author and for committer), 1 version, and of course once
->repository() constructor.
Here we can see how to work around current API to: it uses
Git::config(@repo, "sendemail.identity") form, where
my $repo = eval { Git->repository() };
my @repo = $repo ? ($repo) : ();
to make it work both with git repository (using repo config), and
outside/without git repository, using only user and system git
config.
4. git-svn.perl (which is if I checked correctly third largest scripted
git command, after gitk-gui/gitk-wish and gitweb/gitweb.perl) uses:
3 x repository
28 x command_oneline
19 x command_noisy
18 x command
14 x command_output_pipe
1 x command_input_pipe
1 x git_try_cmd (and many "eval { command()/command_oneline() }")
2 x cat_blob
1 x hash_and_insert_object
1 x get_colorbool
(The above are all if I have not made mistake when counting commands)
Side note: git-svn is command which would get most out of
Git::Config, as it currently uses combination of "git config -l"
and "git config --get" (I guess that the code in question predates
machine-parseable "git config -l -z").
Note that all those statictics doesn't count how many times some
Git.pm method was called, only how many times it occurs in the code.
--
Jakub Narebski
Poland
^ permalink raw reply
* Re: Statictics on Git.pm usage in git commands (was: [PATCH 2/3] add new Git::Repo API)
From: Petr Baudis @ 2008-07-19 21:14 UTC (permalink / raw)
To: Jakub Narebski; +Cc: Lea Wiemann, git, John Hawley
In-Reply-To: <200807192254.24622.jnareb@gmail.com>
On Sat, Jul 19, 2008 at 10:54:24PM +0200, Jakub Narebski wrote:
> On Fri, 18 July 2008, Petr Baudis wrote:
>
> > But the experience shows that the pipe interface is actually
> > the _most_ used part of the Git Perl API.
Note that I referred both to scripts that are part of Git and
(actually more) to various third-party scripts I wrote externally.
> Here is some statistics on the usage of Git Perl API among built-in
> and contrib commands.
Thanks!
> The situation is worse for scripts in 'contrib/'. From those, only
> contrib/examples/git-remote.perl uses Git.pm; neither blameview,
> continuous, git-import and import-tars in fast-import, setgitperms
> and update-paranoid in hooks, stats, nor other Perl scripts in
> examples (git-rerere, git-svnimport) include "use Git".
I have actually once converted blameview to use Git locally, but in
the end never got around to submit it; I wonder if I have the source
still around somewhere. Not so important, I guess.
> Below there are stats on how different commands from Git.pm are
> used in mentioned Perl scripts:
>
> 2. git-cvsexportcommit.perl uses (besides ->repository() constructor)
> only once ->config; so I guess that current interface wrapping
> git-config should stay, because parsing whole config for such
> situation would be overkill.
I don't understand. Parsing whole config happen will either happen in
git-config or in Git::Config, and the performance difference is so tiny
that it is not really worth the API complexity, I believe.
> 3. git-send-email.perl uses 5 config, 2 config_bool, 2 ident_person
> (for author and for committer), 1 version, and of course once
> ->repository() constructor.
>
> Here we can see how to work around current API to: it uses
> Git::config(@repo, "sendemail.identity") form, where
> my $repo = eval { Git->repository() };
> my @repo = $repo ? ($repo) : ();
> to make it work both with git repository (using repo config), and
> outside/without git repository, using only user and system git
> config.
With the envisioned model, it could use $git which would be either
a reference to a Git::Standalone singleton or Git::Repo instance.
--
Petr "Pasky" Baudis
As in certain cults it is possible to kill a process if you know
its true name. -- Ken Thompson and Dennis M. Ritchie
^ permalink raw reply
* Re: [PATCH] Rename ".dotest/" to ".git/rebase" and ".dotest-merge" to "rebase-merge"
From: Junio C Hamano @ 2008-07-19 21:52 UTC (permalink / raw)
To: Olivier Marin
Cc: Theodore Tso, Nanako Shiraishi, Johannes Schindelin,
René Scharfe, Stephan Beyer, Joe Fiorini, git, Jari Aalto
In-Reply-To: <4882454D.2080500@free.fr>
Olivier Marin <dkr+ml.git@free.fr> writes:
> It tries to apply patches even on a dirty tree which makes difficult
> to automatically do a "git reset --hard" with --skip or --abort and
> forces the user to clean the index by hand if last patch failed with
> unmerged files.
>
> So, do some people still use "git am" with a dirty tree or will a
> patch that make it work like "git rebase" be accepted?
Anything that changes "am" to require a clean working tree will NEVER be
accepted. I personally rely on the ability for it to run in a dirty tree,
so does Linus.
Side note. Anything that changes "merge" to require a clean
working tree is also unacceptable. Cf.
http://thread.gmane.org/gmane.comp.version-control.git/9073/focus=9089
Linus talks about "patch" in the paragraph second to the last one
in the message; back then he was talking about "git-applymbox" but
the same argument there applies to its newer incarnation "git-am".
Side note #2. It would have been nice if "rebase" were also
written in such a way that it can work in a dirty tree as long as
local changes did not interfere with the operation, but it is a
lot more involved.
When I looked at the "am --abort" patch briefly, I had an impression (by
reading its test case) that it correctly refrained from doing the
destructive "reset --hard".
^ permalink raw reply
* Re: "error: non-monotonic index" during fresh linux-2.6.git cloning.
From: Junio C Hamano @ 2008-07-19 22:00 UTC (permalink / raw)
To: Evgeniy Polyakov; +Cc: git
In-Reply-To: <20080719195909.GA5093@2ka.mipt.ru>
Evgeniy Polyakov <johnpol@2ka.mipt.ru> writes:
> I posted it so it would be stored in archive, that old enough git
> version does not work with recent trees, so one should upgrade if this
> error occures.
Thanks, but you are about 5 days too late ;-)
http://thread.gmane.org/gmane.comp.version-control.git/76650/focus=88402
^ permalink raw reply
* Re: [PATCH] Rename ".dotest/" to ".git/rebase" and ".dotest-merge" to "rebase-merge"
From: Junio C Hamano @ 2008-07-19 22:18 UTC (permalink / raw)
To: Olivier Marin
Cc: Theodore Tso, Nanako Shiraishi, Johannes Schindelin,
René Scharfe, Stephan Beyer, Joe Fiorini, git, Jari Aalto
In-Reply-To: <4882350B.6020003@free.fr>
Olivier Marin <dkr+ml.git@free.fr> writes:
> Subject: [PATCH] git am --abort
>
> To squash.
>
> Signed-off-by: Olivier Marin <dkr@freesurf.fr>
Thanks.
> @@ -203,9 +204,10 @@ then
>
> case "$abort" in
> t)
> - rm -fr "$dotest" &&
> + git rerere clear &&
> git read-tree -m -u ORIG_HEAD &&
> - git reset ORIG_HEAD && :
> + git reset ORIG_HEAD &&
> + rm -fr "$dotest"
> exit ;;
> esac
> else
Clearing the rerere information needs to be done, but I think we should
drop the last && to make sure we remove "$dotest" and exit with its exit
status.
I'm happy with the documentation and help-text parts of your patch, but
probably this, on top of 1a6f6bb (git am --abort, 2008-07-16), is more
appropriate?
---
git-am.sh | 6 +++---
t/t4151-am-abort.sh | 46 +++++++++++++++++++++++++++-------------------
2 files changed, 30 insertions(+), 22 deletions(-)
diff --git a/git-am.sh b/git-am.sh
index a44bd7a..5cbf8f4 100755
--- a/git-am.sh
+++ b/git-am.sh
@@ -203,9 +203,9 @@ then
case "$abort" in
t)
- rm -fr "$dotest" &&
- git read-tree -m -u ORIG_HEAD &&
- git reset ORIG_HEAD && :
+ git rerere clear
+ git read-tree --reset -u HEAD ORIG_HEAD
+ rm -fr "$dotest"
exit ;;
esac
else
diff --git a/t/t4151-am-abort.sh b/t/t4151-am-abort.sh
index 96b2cd5..dda7e2c 100755
--- a/t/t4151-am-abort.sh
+++ b/t/t4151-am-abort.sh
@@ -22,27 +22,35 @@ test_expect_success setup '
done &&
git format-patch initial &&
git checkout -b side initial &&
- echo local change >file-2 &&
- cp file-2 file-2-expect
+ echo local change >file-2-expect
'
-test_expect_success 'am stops at a patch that does not apply' '
- test_must_fail git am 000[124]-*.patch &&
- git log --pretty=tformat:%s >actual &&
- for i in 3 2 initial
- do
- echo $i
- done >expect &&
- test_cmp expect actual
-'
+for with3 in '' ' -3'
+do
+ test_expect_success "am$with3 stops at a patch that does not apply" '
-test_expect_success 'am --abort goes back' '
- git am --abort &&
- git rev-parse HEAD >actual &&
- git rev-parse initial >expect &&
- test_cmp expect actual &&
- test_cmp file-2-expect file-2 &&
- git diff-index --exit-code --cached HEAD
-'
+ git reset --hard initial &&
+ cp file-2-expect file-2 &&
+
+ test_must_fail git am$with3 000[124]-*.patch &&
+ git log --pretty=tformat:%s >actual &&
+ for i in 3 2 initial
+ do
+ echo $i
+ done >expect &&
+ test_cmp expect actual
+ '
+
+ test_expect_success "am --abort goes back after failed am$with3" '
+ git-am --abort &&
+ git rev-parse HEAD >actual &&
+ git rev-parse initial >expect &&
+ test_cmp expect actual &&
+ test_cmp file-2-expect file-2 &&
+ git diff-index --exit-code --cached HEAD &&
+ test ! -f .git/rr-cache/MERGE_RR
+ '
+
+done
test_done
^ permalink raw reply related
* Re: [PATCH] Rename ".dotest/" to ".git/rebase" and ".dotest-merge" to "rebase-merge"
From: Junio C Hamano @ 2008-07-19 22:27 UTC (permalink / raw)
To: Olivier Marin
Cc: Theodore Tso, Nanako Shiraishi, Johannes Schindelin,
René Scharfe, Stephan Beyer, Joe Fiorini, git, Jari Aalto
In-Reply-To: <7v3am5zfea.fsf@gitster.siamese.dyndns.org>
Junio C Hamano <gitster@pobox.com> writes:
> I'm happy with the documentation and help-text parts of your patch, but
> probably this, on top of 1a6f6bb (git am --abort, 2008-07-16), is more
> appropriate?
>
> ---
> git-am.sh | 6 +++---
> t/t4151-am-abort.sh | 46 +++++++++++++++++++++++++++-------------------
> 2 files changed, 30 insertions(+), 22 deletions(-)
>
> diff --git a/git-am.sh b/git-am.sh
> index a44bd7a..5cbf8f4 100755
> --- a/git-am.sh
> +++ b/git-am.sh
> @@ -203,9 +203,9 @@ then
>
> case "$abort" in
> t)
> - rm -fr "$dotest" &&
> - git read-tree -m -u ORIG_HEAD &&
> - git reset ORIG_HEAD && :
> + git rerere clear
> + git read-tree --reset -u HEAD ORIG_HEAD
> + rm -fr "$dotest"
We still need "git reset ORIG_HEAD" after the read-tree. Sorry about the
noise.
> exit ;;
> esac
> else
^ permalink raw reply
* [PATCH] git submodule documentation: typo fix
From: Miklos Vajna @ 2008-07-19 22:28 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Petr Baudis, git
The current status of submodules can be queried using the 'status' (and
not the 'submodule') subcommand.
Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
---
Documentation/git-submodule.txt | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/Documentation/git-submodule.txt b/Documentation/git-submodule.txt
index bb4e6fb..e849858 100644
--- a/Documentation/git-submodule.txt
+++ b/Documentation/git-submodule.txt
@@ -34,7 +34,7 @@ When adding a new submodule to the tree, the 'add' subcommand is to be used.
However, when pulling a tree containing submodules, these will not be checked
out by default; the 'init' and 'update' subcommands will maintain submodules
checked out and at appropriate revision in your working tree. You can inspect
-the current status of your submodules using the 'submodule' subcommand and get
+the current status of your submodules using the 'status' subcommand and get
an overview of changes 'update' would perform using the 'summary' subcommand.
--
1.5.6.2.450.g8d367.dirty
^ permalink raw reply related
* Re: [PATCH] Rename ".dotest/" to ".git/rebase" and ".dotest-merge" to "rebase-merge"
From: Jakub Narebski @ 2008-07-19 22:39 UTC (permalink / raw)
To: git
In-Reply-To: <7vd4l9zgmp.fsf@gitster.siamese.dyndns.org>
[This is git@vger.kernel.org only copy]
Junio C Hamano wrote:
> Olivier Marin <dkr+ml.git@free.fr> writes:
>
>> It tries to apply patches even on a dirty tree which makes difficult
>> to automatically do a "git reset --hard" with --skip or --abort and
>> forces the user to clean the index by hand if last patch failed with
>> unmerged files.
>>
>> So, do some people still use "git am" with a dirty tree or will a
>> patch that make it work like "git rebase" be accepted?
>
> Anything that changes "am" to require a clean working tree will NEVER be
> accepted. I personally rely on the ability for it to run in a dirty tree,
> so does Linus.
>
> Side note. Anything that changes "merge" to require a clean
> working tree is also unacceptable. Cf.
>
> http://thread.gmane.org/gmane.comp.version-control.git/9073/focus=9089
>
> Linus talks about "patch" in the paragraph second to the last one
> in the message; back then he was talking about "git-applymbox" but
> the same argument there applies to its newer incarnation "git-am".
>
> Side note #2. It would have been nice if "rebase" were also
> written in such a way that it can work in a dirty tree as long as
> local changes did not interfere with the operation, but it is a
> lot more involved.
>
> When I looked at the "am --abort" patch briefly, I had an impression (by
> reading its test case) that it correctly refrained from doing the
> destructive "reset --hard".
I guess instead of "git reset --hard" we can use here "git stash save
&& git stash apply --index" to save state (perhaps as "git stash save
--no-reset"), and either "git stash drop" at the the end, or
"git reset --hard && git stash pop --index" at '--abort'.
--
Jakub Narebski
Poland
ShadeHawk on #git
^ permalink raw reply
* Re: [PATCH] git submodule documentation: typo fix
From: Junio C Hamano @ 2008-07-19 22:42 UTC (permalink / raw)
To: Miklos Vajna; +Cc: Petr Baudis, git
In-Reply-To: <1216506534-27649-1-git-send-email-vmiklos@frugalware.org>
Thanks, but I think Pasky already covered this typo in his latest round.
^ permalink raw reply
* Re: [PATCH] git submodule documentation: typo fix
From: Miklos Vajna @ 2008-07-19 22:50 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Petr Baudis, git
In-Reply-To: <7vfxq5xzqy.fsf@gitster.siamese.dyndns.org>
[-- Attachment #1: Type: text/plain, Size: 277 bytes --]
On Sat, Jul 19, 2008 at 03:42:13PM -0700, Junio C Hamano <gitster@pobox.com> wrote:
> Thanks, but I think Pasky already covered this typo in his latest round.
Ah, possible. I was just reading 'git log -p junio/master' to catch up
with the recent changes and noticed this one.
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply
* Re: What's cooking in git.git (topics)
From: Johannes Schindelin @ 2008-07-19 23:16 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Nanako Shiraishi, git
In-Reply-To: <7v4p6l3jbm.fsf@gitster.siamese.dyndns.org>
Hi,
On Sat, 19 Jul 2008, Junio C Hamano wrote:
> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
>
> > Yes, I agree, if all strategies fail, it is dubitable that we find a
> > metric that will always find the "best" one. But if one fails and the
> > next one does not, it is obvious what is correct.
>
> Not at all. Imagine the case where one of them is either ours or
> theirs.
But then it is not the _default_ at all!
It is what the _user_ _asked_ for.
So this is what the user gets.
With Git, the user is not ignored (like GNOME does, to "help" the user).
With Git, the user _gets_ what she asked for, even if the question does
not make sense.
Ciao,
Dscho
^ permalink raw reply
* Re: [PATCH] git-mv: Keep moved index entries inact
From: Junio C Hamano @ 2008-07-19 23:54 UTC (permalink / raw)
To: Petr Baudis; +Cc: git
In-Reply-To: <20080717223036.20680.9672.stgit@localhost>
Petr Baudis <pasky@suse.cz> writes:
> A new test has been added to the testsuite to reflect this change.
> Also, based on suggestion by Junio about desired symlink behaviour
> of git mv, I have added two tests for that; however, I do not have
> need or desire to spend time fixing this, so they are expected
> to fail for now until someone gets around to fixing that.
Well, somebody would eventually come to help, then ;-).
> builtin-mv.c | 62 ++++++++-------------------------------------------------
> cache.h | 2 ++
> read-cache.c | 15 ++++++++++++++
> t/t7001-mv.sh | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++
> 4 files changed, 83 insertions(+), 53 deletions(-)
Very nice code reduction, isn't it?
> diff --git a/read-cache.c b/read-cache.c
> index 1648428..70e5f57 100644
> --- a/read-cache.c
> +++ b/read-cache.c
> @@ -38,6 +38,21 @@ static void replace_index_entry(struct index_state *istate, int nr, struct cache
> istate->cache_changed = 1;
> }
>
> +void rename_index_entry_at(struct index_state *istate, int nr, const char *new_name)
> +{
> + struct cache_entry *old = istate->cache[nr], *new;
> + int namelen = strlen(new_name);
> +
> + new = xmalloc(cache_entry_size(namelen));
> + copy_cache_entry(new, old);
> + new->ce_flags = (new->ce_flags & ~CE_NAMEMASK) | namelen;
> + memcpy(new->name, new_name, namelen);
> +
> + cache_tree_invalidate_path(istate->cache_tree, old->name);
> + remove_index_entry_at(istate, nr);
> + add_index_entry(istate, new, ADD_CACHE_OK_TO_ADD|ADD_CACHE_OK_TO_REPLACE);
> +}
Hmm, would this use of copy_cache_entry() kosher, I have to wonder. This
new copy of cache entry begins its life unhashed, doesn't it? Shouldn't
we be not copying its hashed/unhashed bits from the old one?
Also setting of that ce_flags looks wrong when namelen does not fit within
the width of CE_NAMEMASK. Shouldn't it be doing the same thing as
create_ce_flags()?
> diff --git a/t/t7001-mv.sh b/t/t7001-mv.sh
> index 336cfaa..6b615f8 100755
> --- a/t/t7001-mv.sh
> +++ b/t/t7001-mv.sh
> @@ -156,4 +156,61 @@ test_expect_success 'absolute pathname outside should fail' '(
>
> )'
>
> +# git mv meets angry Git maintainer
What's this comment about?
> +test_expect_success 'git mv should not change sha1 of moved cache entry' '
> +
> + rm -fr .git &&
> + git init &&
> + echo 1 >dirty &&
> + git add dirty &&
> + entry="$(git ls-files --stage dirty | cut -f 1)"
"rev-parse :dirty"?
^ permalink raw reply
* Re: Statictics on Git.pm usage in git commands (was: [PATCH 2/3] add new Git::Repo API)
From: Jakub Narebski @ 2008-07-20 0:16 UTC (permalink / raw)
To: Petr Baudis; +Cc: git
In-Reply-To: <20080719211403.GA10151@machine.or.cz>
On Sat, 19 July 2008, Petr Baudis wrote:
> On Sat, Jul 19, 2008 at 10:54:24PM +0200, Jakub Narebski wrote:
> > 3. git-send-email.perl uses 5 config, 2 config_bool, 2 ident_person
> > (for author and for committer), 1 version, and of course once
> > ->repository() constructor.
> >
> > Here we can see how to work around current API to: it uses
> > Git::config(@repo, "sendemail.identity") form, where
> > my $repo = eval { Git->repository() };
> > my @repo = $repo ? ($repo) : ();
> > to make it work both with git repository (using repo config), and
> > outside/without git repository, using only user and system git
> > config.
>
> With the envisioned model, it could use $git which would be either
> a reference to a Git::Standalone singleton or Git::Repo instance.
So that the code would look like the following, instead:
my $git = new Git::Cmd; # or Git::Standalone, or Git::CommandFactory
my $repo = eval { Git->repository() };
$git = $repo if $repo;
and later use
$git->config('sendemail.identity');
By the way, git-svn can use command(...) instead of $repo->command(...)
because it sets $ENV{'GIT_DIR'} if it is unset... but I don't see
where Git.pm inserts 'git' to commands list...
--
Jakub Narebski
Poland
^ permalink raw reply
* [PATCH] index: be careful when handling long names
From: Junio C Hamano @ 2008-07-20 0:51 UTC (permalink / raw)
To: git; +Cc: Petr Baudis
This is a follow-up to 7fec10b (index: be careful when handling long
names, 2008-01-18) where we fixed handling of index entries with long
names. There still remained a few remaining unsafe codepaths.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
builtin-apply.c | 2 +-
builtin-update-index.c | 2 +-
read-cache.c | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/builtin-apply.c b/builtin-apply.c
index e15471b..f2377fe 100644
--- a/builtin-apply.c
+++ b/builtin-apply.c
@@ -2758,7 +2758,7 @@ static void add_index_file(const char *path, unsigned mode, void *buf, unsigned
ce = xcalloc(1, ce_size);
memcpy(ce->name, path, namelen);
ce->ce_mode = create_ce_mode(mode);
- ce->ce_flags = namelen;
+ ce->ce_flags = create_ce_flags(namelen, 0);
if (S_ISGITLINK(mode)) {
const char *s = buf;
diff --git a/builtin-update-index.c b/builtin-update-index.c
index 38eb53c..003cb98 100644
--- a/builtin-update-index.c
+++ b/builtin-update-index.c
@@ -95,7 +95,7 @@ static int add_one_path(struct cache_entry *old, const char *path, int len, stru
size = cache_entry_size(len);
ce = xcalloc(1, size);
memcpy(ce->name, path, len);
- ce->ce_flags = len;
+ ce->ce_flags = create_ce_flags(len, 0);
fill_stat_cache_info(ce, st);
ce->ce_mode = ce_mode_from_stat(old, st->st_mode);
diff --git a/read-cache.c b/read-cache.c
index 1648428..2dd8131 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -498,7 +498,7 @@ int add_to_index(struct index_state *istate, const char *path, struct stat *st,
size = cache_entry_size(namelen);
ce = xcalloc(1, size);
memcpy(ce->name, path, namelen);
- ce->ce_flags = namelen;
+ ce->ce_flags = create_ce_flags(namelen, 0);
fill_stat_cache_info(ce, st);
if (trust_executable_bit && has_symlinks)
^ permalink raw reply related
* [ANNOUNCE] GIT 1.5.6.4
From: Junio C Hamano @ 2008-07-20 0:56 UTC (permalink / raw)
To: git; +Cc: linux-kernel
The latest maintenance release GIT 1.5.6.4 is available at the
usual places:
http://www.kernel.org/pub/software/scm/git/
git-1.5.6.4.tar.{gz,bz2} (source tarball)
git-htmldocs-1.5.6.4.tar.{gz,bz2} (preformatted docs)
git-manpages-1.5.6.4.tar.{gz,bz2} (preformatted docs)
The RPM binary packages for a few architectures are also provided
as courtesy.
RPMS/$arch/git-*-1.5.6.4-1.fc9.$arch.rpm (RPM)
GIT v1.5.6.4 Release Notes
==========================
Fixes since v1.5.6.3
--------------------
* Various commands could overflow its internal buffer on a platform
with small PATH_MAX value in a repository that has contents with
long pathnames.
* There wasn't a way to make --pretty=format:%<> specifiers to honor
.mailmap name rewriting for authors and committers. Now you can with
%aN and %cN.
* Bash completion wasted too many cycles; this has been optimized to be
usable again.
* Bash completion lost ref part when completing something like "git show
pu:Makefile".
* "git-cvsserver" did not clean up its temporary working area after annotate
request.
* "git-daemon" called syslog() from its signal handler, which was a
no-no.
* "git-fetch" into an empty repository used to remind that the fetch will
be huge by saying "no common commits", but this was an unnecessary
noise; it is already known by the user anyway.
* "git-http-fetch" would have segfaulted when pack idx file retrieved
from the other side was corrupt.
* "git-index-pack" used too much memory when dealing with a deep delta chain.
* "git-mailinfo" (hence "git-am") did not correctly handle in-body [PATCH]
line to override the commit title taken from the mail Subject header.
* "git-rebase -i -p" lost parents that are not involved in the history
being rewritten.
* "git-rm" lost track of where the index file was when GIT_DIR was
specified as a relative path.
* "git-rev-list --quiet" was not quiet as advertised.
Contains other various documentation fixes.
^ permalink raw reply
* Re: [PATCH/rfc] git-svn.perl: workaround assertions in svn library 1.5.0
From: Junio C Hamano @ 2008-07-20 1:27 UTC (permalink / raw)
To: Dmitry Potapov; +Cc: Gerrit Pape, git, Eric Wong
In-Reply-To: <37fcd2780807171137m1c5a8197vc94b2a42ac53a297@mail.gmail.com>
"Dmitry Potapov" <dpotapov@gmail.com> writes:
> On Thu, Jul 17, 2008 at 6:08 PM, Gerrit Pape <pape@smarden.org> wrote:
>>
>> Hi, while this commit fixed the selftests, it unfortunately is a
>> regression
>>
>> http://thread.gmane.org/gmane.comp.version-control.git/87822/
>> http://bugs.debian.org/490400
>
> This particular breakage is easy to fix:
>
> diff --git a/git-svn.perl b/git-svn.perl
> index 3750e47..a5a5b1b 100755
> --- a/git-svn.perl
> +++ b/git-svn.perl
> @@ -1226,7 +1226,7 @@ sub linearize_history {
>
> sub find_file_type_and_diff_status {
> my ($path) = @_;
> - return ('dir', '') if $path eq '.';
> + return ('dir', '') if $path eq '';
>
> my $diff_output =
> command_oneline(qw(diff --cached --name-status --), $path) || "";
>
> but it could be some other places in git-svn that may need correction too.
>
>>
>> I'm still not sure whether this is a git-svn problem, or actually a
>> problem in subversion 1.5.0
>
> Accordingly to SVN developers you do not use SVN API correctly,
> therefore you got assert. So, the problem in git-svn.
> http://svn.haxx.se/dev/archive-2008-01/0425.shtml
So what's the conclusion of this issue?
I'll just revert 2fe403e (git-svn.perl: workaround assertions in svn
library 1.5.0, 2008-07-06) for 1.6.0-rc0 unless I hear better
suggestions.
^ permalink raw reply
* What's cooking in git.git (topics)
From: Junio C Hamano @ 2008-07-20 1:58 UTC (permalink / raw)
To: git
In-Reply-To: <7vlk01hqzz.fsf@gitster.siamese.dyndns.org>
Here are the topics that have been cooking. Commits prefixed
with '-' are only in 'pu' while commits prefixed with '+' are
in 'next'.
The topics list the commits in reverse chronological order. The topics
meant to be merged to the maintenance series have "maint-" in their names.
Due to increased activity level from people including GSoC students, I
expect 'next' to stay somewhat more active than previous rounds during the
1.6.0-rc cycle. The request for people who usually follow 'next' is the
same as usual, though. After -rc1 is tagged, please run 'master' for your
daily git use instead, in order to make sure 'master' does what it claims
to do without regression.
Tentative schedule, my wishful thinking:
- 1.6.0-rc0 (Jul 20)
- 1.6.0-rc1 (Jul 23)
- 1.6.0-rc2 (Jul 30)
- 1.6.0-rc3 (Aug 6)
- 1.6.0 (Aug 10)
No real activity on 'next', as I was busy tending bugfixes and pushing out
v1.5.6.4 today.
----------------------------------------------------------------
[Will merge to "master" soon]
* ns/am-abort (Wed Jul 16 19:39:10 2008 +0900) 1 commit
+ git am --abort
This one is for Ted; builds on top of the recent "am and rebase leaves
ORIG_HEAD just like reset, merge and pull does" rather nicely.
* jc/rerere-auto-more (Wed Jul 16 20:25:18 2008 -0700) 1 commit
+ rerere.autoupdate: change the message when autoupdate is in effect
This one is for Ingo.
This changes the message rerere issues after reusing previous conflict
resolution from "Resolved" to "Staged" when autoupdate option is in
effect.
It is envisioned that in practice, some auto resolutions are trickier and
iffier than others, and we would want to add a feature to mark individual
resolutions as "this is ok to autoupdate" or "do not autoupdate the result
using this resolution even when rerere.autoupdate is in effect" in the
future. When that happens, these messages will make the distinction
clearer.
* ap/trackinfo (Wed Jul 16 15:19:27 2008 -0400) 1 commit
+ Reword "your branch has diverged..." lines to reduce line length
----------------------------------------------------------------
[Stalled/Needs more work]
* rs/imap (Wed Jul 9 22:29:02 2008 +0100) 5 commits
- Documentation: Improve documentation for git-imap-send(1)
- imap-send.c: more style fixes
- imap-send.c: style fixes
- git-imap-send: Support SSL
- git-imap-send: Allow the program to be run from subdirectories of
a git tree
I said: "Some people seem to prefer having this feature available also
with gnutls. If such a patch materializes soon, that would be good, but
otherwise I'll merge this as-is to 'next'. Such an enhancement can be
done in-tree on top of this series." Anybody?
* gi/cherry-cache (Sat Jul 12 20:14:51 2008 -0700) 1 commit
. cherry: cache patch-ids to avoid repeating work
The discussion suggested that the value of having the cache itself is
iffy, but I should pick up the updated one and look at it.
* lw/gitweb (Fri Jul 11 03:11:48 2008 +0200) 3 commits
. gitweb: use new Git::Repo API, and add optional caching
. Add new Git::Repo API
. gitweb: add test suite with Test::WWW::Mechanize::CGI
* sb/sequencer (Tue Jul 1 04:38:34 2008 +0200) 4 commits
. Migrate git-am to use git-sequencer
. Add git-sequencer test suite (t3350)
. Add git-sequencer prototype documentation
. Add git-sequencer shell prototype
I haven't looked at the updated series yet. I should, but nobody else
seems to be looking at these patches, which is somewhat depressing but
understandable. Summer is slower ;-)
* pb/submodule (Wed Jul 16 21:11:40 2008 +0200) 7 commits
. t7403: Submodule git mv, git rm testsuite
. git rm: Support for removing submodules
. git mv: Support moving submodules
. submodule.*: Introduce simple C interface for submodule lookup by
path
. git submodule add: Fix naming clash handling
. t7400: Add short "git submodule add" testsuite
. git-mv: Remove dead code branch
Long overdue usability improvement series for submodule. Very much
welcomed. It would be nice to have some submodule improvements in 1.6.0,
but it would take us a few more rounds to hit 'next' with this, and it
will not be in 'master' when 1.6.0 ships.
* jc/grafts (Wed Jul 2 17:14:12 2008 -0700) 1 commit
- [BROKEN wrt shallow clones] Ignore graft during object transfer
Cloning or fetching from a repository from grafts did not send objects
that are hidden by grafts, but the commits in the resulting repository do
need these to pass fsck. This fixes object transfer to ignore grafts.
Another fix is needed to git-prune so that it ignores grafts but treats
commits that are mentioned in grafts as reachable.
* jc/blame (Wed Jun 4 22:58:40 2008 -0700) 2 commits
- blame: show "previous" information in --porcelain/--incremental
format
- git-blame: refactor code to emit "porcelain format" output
This is for peeling the line from the blamed version to see what's behind
it, which may or may not help applications like gitweb.
----------------------------------------------------------------
[Will drop]
* xx/merge-in-c-into-next (Wed Jul 9 13:51:46 2008 -0700) 4 commits
+ Teach git-merge -X<option> again.
+ Merge branch 'jc/merge-theirs' into xx/merge-in-c-into-next
+ builtin-merge.c: use parse_options_step() "incremental parsing"
machinery
+ Merge branch 'ph/parseopt-step-blame' into xx/merge-in-c-into-next
* jc/merge-theirs (Fri Jul 18 02:43:00 2008 -0700) 6 commits
- Document that merge strategies can now take their own options
+ Make "subtree" part more orthogonal to the rest of merge-
recursive.
+ Teach git-pull to pass -X<option> to git-merge
+ Teach git-merge to pass -X<option> to the backend strategy module
+ git-merge-recursive-{ours,theirs}
+ git-merge-file --ours, --theirs
It appears nobody wants "theirs" nor "ours", so I'll soon apply a
wholesale revert for these series to 'next', and then these will be
dropped when we rewind 'next' after 1.6.0 final.
Please make sure next time somebody asks "ours/theirs" merge on the list
and #git s/he is quickly told that it was unanimously rejected so that
people do not have to waste time rehashing the topic ever again.
----------------------------------------------------------------
[On Hold]
* sg/merge-options (Sun Apr 6 03:23:47 2008 +0200) 1 commit
+ merge: remove deprecated summary and diffstat options and config
variables
This was previously in "will be in master soon" category, but it turns out
that the synonyms to the ones this one deletes are fairly new invention
that happend in 1.5.6 timeframe, and we cannot do this just yet. Perhaps
in 1.7.0.
* jc/dashless (Thu Jun 26 16:43:34 2008 -0700) 2 commits
+ Revert "Make clients ask for "git program" over ssh and local
transport"
+ Make clients ask for "git program" over ssh and local transport
This is the "botched" one. Will be resurrected during 1.7.0 or 1.8.0
timeframe.
* jk/renamelimit (Sat May 3 13:58:42 2008 -0700) 1 commit
- diff: enable "too large a rename" warning when -M/-C is explicitly
asked for
This would be the right thing to do for command line use, but gitk will be
hit due to tcl/tk's limitation, so I am holding this back for now.
^ permalink raw reply
* What's in git.git (stable)
From: Junio C Hamano @ 2008-07-20 1:59 UTC (permalink / raw)
To: git
In-Reply-To: <7vabgiwlj5.fsf@gitster.siamese.dyndns.org>
* The 'maint' branch is at 1.5.6.4.
* The 'master' branch has these since the last announcement
in addition to what is already in 1.5.6.4.
Alexander Gavrilov (3):
Avoid rescanning unchanged entries in search for copies.
Do not try to detect move/copy for entries below threshold.
Support gitlinks in fast-import.
Eric Raible (1):
Teach lookup_prog not to select directories
Eric Wong (1):
t/lib-git-svn: fix SVN_HTTPD tests to work with "trash directory"
Fabian Emmes (2):
Testsuite: Unset CVS_SERVER
testsuite for cvs co -c
Johannes Sixt (1):
builtin-clone: rewrite guess_dir_name()
Junio C Hamano (9):
git-rebase: report checkout failure
t/aggregate-results: whitespace fix
Update draft release notes for 1.6.0
read-cache.c: typofix
mailinfo: off-by-one fix for [PATCH (foobar)] removal from Subject: line
builtin-remote.c: fix earlier "skip_prefix()" conversion
t9001 (send-email): Do not use hardcoded /bin/sh in test
.mailmap update
Getting closer to 1.6.0-rc0
Lars Noschinski (2):
cvsserver: Add support for packed refs
cvsserver: Add cvs co -c support
Lukas Sandström (3):
Make some strbuf_*() struct strbuf arguments const.
Add some useful functions for strbuf manipulation.
git-mailinfo: use strbuf's instead of fixed buffers
Miklos Vajna (4):
t0001-init.sh: change confusing directory name
t1007-hash-object.sh: use quotes for the test description
git-bisect: use dash-less form on git bisect log
make remove-dashes: apply to scripts and programs as well, not just to
builtins
Nanako Shiraishi (3):
cache-tree.c: make cache_tree_find() static
builtin-describe.c: make a global variable "pattern" static
parse-options.c: make check_typos() static
Peter Harris (1):
Add ANSI control code emulation for the Windows console
Petr Baudis (5):
Documentation/git-submodule.txt: Add Description section
Documentation/RelNotes-1.6.0.txt: Expand on the incompatible packfiles
Documentation/git-submodule.txt: Further clarify the description
Documentation: How to ignore local changes in tracked files
Documentation/git-merge.txt: Partial rewrite of How Merge Works
René Scharfe (8):
archive: remove args member from struct archiver
add context pointer to read_tree_recursive()
archive: add baselen member to struct archiver_args
archive: centralize archive entry writing
archive: unify file attribute handling
archive: remove extra arguments parsing code
archive: make zip compression level independent from core git
archive: remove unused headers
Stephan Beyer (4):
t/test-lib.sh: exit with small negagive int is ok with test_must_fail
t/: Use "test_must_fail git" instead of "! git"
Make usage strings dash-less
Link git-shell only to a subset of libgit.a
SungHyun Nam (1):
t/Makefile: use specified shell when running aggregation script
^ permalink raw reply
* Re: Closing the merge window for 1.6.0
From: Nick Andrew @ 2008-07-20 2:23 UTC (permalink / raw)
To: git
In-Reply-To: <20080714124327.GL10151@machine.or.cz>
Petr Baudis <pasky <at> suse.cz> writes:
> Upgrading to newer version, *especially* if it's over then 1.4 - 1.5
> boundary, is not something you could seriously expect Debian to do.
> At least I actually _hope_ so, as a sysadmin of a network of 40 etch
> workstations.
Perhaps Debian could add a "git1.5" package to the etch repository. That
will guarantee that no current etch users of git 1.4.4.4 will be affected,
and they can choose if they want, to install git1.5.
Nick.
^ 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