* Re: On Tabs and Spaces
From: Jeff King @ 2007-10-18 4:54 UTC (permalink / raw)
To: Nicolas Pitre; +Cc: Linus Torvalds, Luke Lu, Christer Weinigel, Tom Tobin, git
In-Reply-To: <alpine.LFD.0.9999.0710180049450.19446@xanadu.home>
On Thu, Oct 18, 2007 at 12:52:59AM -0400, Nicolas Pitre wrote:
> Well, you actually touched every files in the tree, and there are about
> 22K of them. this, plus the tree objects leading to them, your commit
> certainly did create an unusual amount of loose objects. Repacking them
> will inevitably take a wile.
Yes, I know. I wasn't complaining so much about the speed, but rather
the behavior of "git-gc" running while I was in the middle of trying to
accomplish something else (I hadn't seen it before, because I generally
keep my repos fairly packed).
-Peff
^ permalink raw reply
* Re: bug: origin refs updated too soon locally
From: Shawn O. Pearce @ 2007-10-18 4:53 UTC (permalink / raw)
To: Perry Wagle; +Cc: git
In-Reply-To: <8CEF6150-4BE7-4B4D-B58C-12CE4671007E@cs.indiana.edu>
Perry Wagle <wagle@cs.indiana.edu> wrote:
> If I clone a remote repository, make a few commits, push them to the
> remote repository, and the update hook on the remote repository
> rejects them (exit 1), the local origin refs are still updated as if
> the push had gone through. The workaround is to do a pull to set the
> origin refs back.
Heh. Yes, that's a known bug. Someone should really fix it.
The problem is we are updating the local tracking ref before we
actually get confirmation from the remote side that the remote side
has accepted (or rejected) that update request.
This is probably easier to do after the db/fetch-pack topic is
merged as the improvements there might make this easier. But I
could be wrong. Be nice if someone proved me wrong by writing up
a patch for git-send-pack.
For the time being the best way to recover from this is to use
git-fetch rather than git-pull. Recall that git-pull is defined as
"fetch then merge". You really just need to refetch the tracking
branches again, so your tracking branches have the same value as
the remote side.
--
Shawn.
^ permalink raw reply
* Re: On Tabs and Spaces
From: Nicolas Pitre @ 2007-10-18 4:52 UTC (permalink / raw)
To: Jeff King; +Cc: Linus Torvalds, Luke Lu, Christer Weinigel, Tom Tobin, git
In-Reply-To: <20071018024553.GA5186@coredump.intra.peff.net>
On Wed, 17 Oct 2007, Jeff King wrote:
> As an aside, that commit was enough to trigger a "git-gc --auto", which
> was my first experience with it. It's actually kind of annoying
> (especially since I was about to repack -a -d).
Well, you actually touched every files in the tree, and there are about
22K of them. this, plus the tree objects leading to them, your commit
certainly did create an unusual amount of loose objects. Repacking them
will inevitably take a wile.
Nicolas
^ permalink raw reply
* Re: pulling Already up-to-date linux-2.6 repo takes ~8 minutes?
From: Shawn O. Pearce @ 2007-10-18 4:50 UTC (permalink / raw)
To: Mike Galbraith; +Cc: git
In-Reply-To: <1192678865.20353.14.camel@Homer.simpson.net>
Mike Galbraith <efault@gmx.de> wrote:
> git_pull_linus scriptlet:
>
> #!/bin/sh
> (cd linux-2.6; git pull git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git)
> (cd linux-2.6; git pull -t git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git)
>
> root@Homer: time ./git_pull_linus
...
> remote: Total 48507 (delta 38878), reused 44654 (delta 35166)
Well, Linus and crew are pretty busy beavers. Its shocking how
fast they can make a dam^H^H^Hoperating system better. :-)
...
> Already up-to-date.
> You are not currently on a branch; you must explicitly
> specify which branch you wish to merge:
> git pull <remote> <branch>
The problem here is you aren't on a branch, you are on a detached
HEAD. So we must have setup the wrong thing in .git/FETCH_HEAD
and we didn't actually merge.
What version of git is this, exactly (`git version`)?
I'd suggest making your life a little bit easier. Consider creating
a remote that points to Linus:
$ git remote add linus git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
$ git checkout -b master ; # or any other branch
$ git config branch.master.remote linus
$ git config branch.master.merge refs/heads/master
Now you can update from Linus with just:
$ git pull
Provided you are on branch "master", or whatever other branches
you setup those branch.*.remote and branch.*.merge configuration
options for.
--
Shawn.
^ permalink raw reply
* Re: [PATCH] Add a message explaining that automatic GC is about to start
From: Steven Grimm @ 2007-10-18 4:44 UTC (permalink / raw)
To: Jeff King; +Cc: Linus Torvalds, Luke Lu, Christer Weinigel, Tom Tobin, git
In-Reply-To: <20071018044143.GA24043@midwinter.com>
Sigh... Forgot to add:
Signed-off-by: Steven Grimm <koreth@midwinter.com>
^ permalink raw reply
* [PATCH] Add a message explaining that automatic GC is about to start
From: koreth @ 2007-10-18 4:41 UTC (permalink / raw)
To: Jeff King; +Cc: Linus Torvalds, Luke Lu, Christer Weinigel, Tom Tobin, git
In-Reply-To: <20071018032307.GA7313@coredump.intra.peff.net>
---
On Wed, Oct 17, 2007 at 11:23:07PM -0400, Jeff King wrote:
> It would have been nicer if it said something like "Your repository
> looks crufty. Running git-gc --auto..." using whatever terms users would
> be comfortable with. Instead, it just started with "Counting objects"
> and a long wait.
And as an added bonus, we can tell people how to turn off automatic GC
and how to invoke it by hand.
builtin-gc.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/builtin-gc.c b/builtin-gc.c
index 23ad2b6..b1159d6 100644
--- a/builtin-gc.c
+++ b/builtin-gc.c
@@ -211,6 +211,10 @@ int cmd_gc(int argc, const char **argv, const char *prefix)
prune = 0;
if (!need_to_gc())
return 0;
+ fprintf(stderr, "Packing your repository for optimum "
+ "performance. If you would rather run\n"
+ "\"git gc\" by hand, run \"git config gc.auto 0\" "
+ "to disable automatic cleanup.\n");
}
if (pack_refs && run_command_v_opt(argv_pack_refs, RUN_GIT_CMD))
--
1.5.3.rc2.4.g726f9
^ permalink raw reply related
* Re: On Tabs and Spaces
From: Dmitry Potapov @ 2007-10-18 4:36 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Jari Aalto, git
In-Reply-To: <alpine.LFD.0.999.0710161214530.6887@woody.linux-foundation.org>
On Tue, Oct 16, 2007 at 12:20:50PM -0700, Linus Torvalds wrote:
> The answer is *also* not "tabs are just for initial code
> indents",
Unfortunately, it leads to some problems. For example, you can type:
git blame alloc.c
2c1cbec1 (Linus Torvalds 2007-04-16 22:10:19 -0700 21) #define DEFINE_ALLOCATOR(name, type) \
855419f7 (Linus Torvalds 2006-06-19 10:44:15 -0700 22) static unsigned int name##_allocs; \
100c5f3b (Linus Torvalds 2007-04-16 22:11:43 -0700 23) void *alloc_##name##_node(void) \
855419f7 (Linus Torvalds 2006-06-19 10:44:15 -0700 24) { \
855419f7 (Linus Torvalds 2006-06-19 10:44:15 -0700 25) static int nr; \
and see that the end of line 23 does not look right. Because of that,
I prefer tabs for initial code indents and spaces in other places. Of
course, my preferences are irrelevant when it comes to someone else's
project, and I can easily use whatever style it takes to get things
done. It is just that "use tabs elsewhere and everything will be fine
as long as you have the standard tab setting" is not exactly correct.
The rest is people's preferences and habits...
Dmitry
^ permalink raw reply
* Re: On Tabs and Spaces
From: Dmitry Torokhov @ 2007-10-18 4:31 UTC (permalink / raw)
To: Jari Aalto; +Cc: git
In-Reply-To: <ejftl3c2.fsf@blue.sea.net>
On Wednesday 17 October 2007, Jari Aalto wrote:
> - Any editor will display the text written in "all spaces"
> 100 % the same. Regradless of any viewer or editor used.
>
> But the same is not true with text that uses tabs (because you
> really can't know what options the editor is preset / user set /
> regarding the treatment of tabs).
>
> The score is 1 - 0 for "all spaces" in this contest.
>
How about this - I like tabs because when you removing it you
need to hit Backspace just once and don't have to strain your
eyes figuring out "Did I delete enough? Does it line up now?"
--
Dmitry
^ permalink raw reply
* Re: On Tabs and Spaces
From: Linus Torvalds @ 2007-10-18 4:22 UTC (permalink / raw)
To: Paul Wankadia; +Cc: git
In-Reply-To: <loom.20071018T032910-500@post.gmane.org>
On Thu, 18 Oct 2007, Paul Wankadia wrote:
>
> I hope and pray that you are parodied on "South Park" someday.
Isn't that what every person aspires to in the end?
Maybe I should start a kooky religion, then I'd be a shoo-in.
Linus
^ permalink raw reply
* Re: On Tabs and Spaces
From: Linus Torvalds @ 2007-10-18 4:17 UTC (permalink / raw)
To: Jeff King; +Cc: david, Luke Lu, Christer Weinigel, Tom Tobin, git
In-Reply-To: <alpine.LFD.0.999.0710172017020.26902@woody.linux-foundation.org>
On Wed, 17 Oct 2007, Linus Torvalds wrote:
>
> [..] and if you're a vi user, you can do a ':set tabstop=4'
btw, don't get me wrong. I think 8-char tabstops are much better, and
would much prefer to really teach people not to indent too deeply (because
six-deep indents really look ugly as hell with 8-char indents).
So setting tabstops to smaller values is not something I think is good
practice, but at least that way you can keep your dirty perversions to
yourself, and don't have to admit to the world that you molest dogs and
small children and use an inferior tab-stop.
The rest of the world might notice occsionally when you don't hide your
non-indentation tab-uses well enough, of course, but keep to block
comments and spaces for non-indentation, and you'll be reasonably safe.
However, if I see people actually having indentations six+ deep, I'll know
that (a) you're likely a small-tab-misusing-deviant and (b) a horrible
programmer. And then the tab-deviancy is the smaller problem.
(Yes, we do have some cases of six+ deep indentations in the kernel. I'm
happy to say that they are fairly rare, and yes, I'm personally convinced
that the 8-wide indent level is part of it. It really *does* end up
encouraging people to split things up and write nested cases as separate
functions etc, because it simply becomes so obvious when things are going
south..)
Linus
^ permalink raw reply
* pulling Already up-to-date linux-2.6 repo takes ~8 minutes?
From: Mike Galbraith @ 2007-10-18 3:41 UTC (permalink / raw)
To: git
Greetings git gods,
I'm wondering if I'm not doing something wrong, and thereby putting
unneeded stress on kernel.org when I pull latest kernel tree.
git_pull_linus scriptlet:
#!/bin/sh
(cd linux-2.6; git pull
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git)
(cd linux-2.6; git pull -t
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git)
root@Homer: time ./git_pull_linus
remote: Generating pack...
remote: Counting objects: 17746
remote: Done counting 55975 objects.
remote: Result has 48507 objects.
remote: Deltifying 48507 objects...
remote: 100% (48507/48507) done
Indexing 48507 objects...
remote: Total 48507 (delta 38878), reused 44654 (delta 35166)
100% (48507/48507) done
Resolving 38878 deltas...
100% (38878/38878) done
3419 objects were added to complete this thin pack.
Already up-to-date.
You are not currently on a branch; you must explicitly
specify which branch you wish to merge:
git pull <remote> <branch>
real 7m57.429s
user 0m13.517s
sys 0m0.859s
8 minutes, truckloads of network traffic, and lord knows what all going
on at the other end just doesn't seem right. /me == dummy?
-Mike
^ permalink raw reply
* Re: On Tabs and Spaces
From: Linus Torvalds @ 2007-10-18 3:32 UTC (permalink / raw)
To: Jeff King; +Cc: david, Luke Lu, Christer Weinigel, Tom Tobin, git
In-Reply-To: <20071018030055.GA7218@coredump.intra.peff.net>
On Wed, 17 Oct 2007, Jeff King wrote:
>
> Yes, obviously. The people who advocate mixing really _are_ objectively
> wrong. But I was talking about all-spaces versus all-tabs.
If you really are all one-or-the-other, then everything is obviously fine,
and spaces have somewhat stronger guarantees (I say "somewhat", because
the line-up-guarantee of all-spaces is only guaranteed with fixed-width
fonts, and hard-tab indents often look nicer in printouts, and are
generally much more flexible in just how wide you make the indent *look*,
ie hard-tabs at least *allow* people to see the indents in different
ways, even if that will potentially mess up any alignment).
But some mixing is inevitable, and at least in UNIX, the tendency is for
tabs, not spaces, by default, so tabs have a much higher chance of
*staying* mostly tabs, while anybody who uses spaces pretty much *will*
get tabs inserted by just about any programming editor that isn't set up
for python.
So you always get _some_ amount of mixing, exactly because most editors
won't show you the difference, and what people aren't aware of, they don't
think about. There's no getting away from that, unless you actually
enforce it with hooks (and in a distributed environment, even that isn't
really going to fly, is it?).
And if you *do* decide to enforce it with hooks, you now have issues like
the fact that some files mustn't do it (autoconvert tabs to spaces in a
Makefile, and it just stops working!), and others have somewhat subtle
issues forcing your converter to be somewhat knowledgeable (trivial
example: strings that are spread across multiple lines in C..)
In general, if you do enforce it (which I personally think is not likely a
good idea, but hey, it's up to the project), I'd *still* suggest going the
way of enforcing hard-tabs, not spaces. As mentioned, space does matter,
but hardtabs really are "friendlier", and if you're a vi user, you can do
a :set tabstop=4 and if that's what you're used to, it will all look
better to you.
In contrast, all-spaces just sucks. It really has no redeeming values.
Linus
^ permalink raw reply
* Re: On Tabs and Spaces
From: Paul Wankadia @ 2007-10-18 3:31 UTC (permalink / raw)
To: git
In-Reply-To: <alpine.LFD.0.999.0710161214530.6887@woody.linux-foundation.org>
Linus Torvalds <torvalds <at> linux-foundation.org> writes:
> The only sane solution is the one the kernel and git have always used:
> tabs are 8 spaces wide, and anybody who disagrees can go screw themselves.
I hope and pray that you are parodied on "South Park" someday.
^ permalink raw reply
* Re: On Tabs and Spaces
From: Jeff King @ 2007-10-18 3:23 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Luke Lu, Christer Weinigel, Tom Tobin, git
In-Reply-To: <alpine.LFD.0.999.0710171955580.26902@woody.linux-foundation.org>
On Wed, Oct 17, 2007 at 08:13:23PM -0700, Linus Torvalds wrote:
> Yes.
>
> You're missing the fact that some people have problems with editors.
>
> So they add a line, and they add *that* line with the wrong kind of
> indentation. And it shows up among the other lines like this (here the
> whole patch is indented):
Oh. I thought you meant "if you have an all-spaces policy, your diffs
will not look good." But what you meant was "when people screw up your
policy by mixing tabs and spaces, your diffs will not look good." And
that applies equally, whether they are screwing up your all-tabs or
all-spaces setup (and I remain convinced that no matter what your
policy, people _will_ screw it up).
Thanks for the clarification.
> It's very seldom the case that you grow some problem space and performance
> stays the same.
Yes. I wondered whether the increased size would really matter here, or
if it would get lost in the noise of program startup and other
activities. But in this case, it really does matter.
> > Gah, I can't believe I've not only been sucked into a tab vs spaces
> > discussion, but now I've actually wasted time doing a performance
> > comparison on it.
> Well, performance analysis isn't exactly a "waste". That "git grep" was
No, it's not a waste. In the grand scheme of things, I don't actually
care that much about the result, but hey, I think I may be the only
person out of this gigantic thread to actually provide _numbers_. :)
> Yeah, I don't think it's wonderful, but it might even be a good thing as a
> "hey, at least you are aware of the notion of GC now" kind of introduction
> to people (who then hopefully realize that they don't actually want
> automatic GC, but rather do it once a week or something).
It would have been nicer if it said something like "Your repository
looks crufty. Running git-gc --auto..." using whatever terms users would
be comfortable with. Instead, it just started with "Counting objects"
and a long wait. I happen to know what that means, but I'm not sure how
a git newbie would react (though it looked _much_ nicer because of
Nico's recent terser progress patches).
-Peff
^ permalink raw reply
* Re: On Tabs and Spaces
From: Linus Torvalds @ 2007-10-18 3:13 UTC (permalink / raw)
To: Jeff King; +Cc: Luke Lu, Christer Weinigel, Tom Tobin, git
In-Reply-To: <20071018024553.GA5186@coredump.intra.peff.net>
On Wed, 17 Oct 2007, Jeff King wrote:
>
> You have made this claim several times, and I really don't understand
> it. If I have 8 spaces, then a diff line will have either " ", "+", or
> "-" followed by 8 spaces. If I use a hard tab, then the tab will end up
> only taking up 7 spaces because of the nature of tabs.
>
> This might matter if I'm comparing non-diff code to diff code. But in a
> diff, _everything_ is indented by exactly one space, so it all lines up.
> Is there something I'm missing?
Yes.
You're missing the fact that some people have problems with editors.
So they add a line, and they add *that* line with the wrong kind of
indentation. And it shows up among the other lines like this (here the
whole patch is indented):
diff --git a/kernel/sched.c b/kernel/sched.c
index 92721d1..1ecb164 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -127,6 +127,7 @@ static inline u32 sg_div_cpu_power(const struct sched_group *sg, u32 load)
static inline void sg_inc_cpu_power(struct sched_group *sg, u32 val)
{
sg->__cpu_power += val;
+ wrong indentation here.
sg->reciprocal_cpu_power = reciprocal_value(sg->__cpu_power);
}
#endif
and so you see the fact that somebody messed up in the patch itself.
It actually more often goes the other way: somebody may have messed up
earlier, but did so *consistently* so it wasn't obvious when looking at
the patch. And then somebody fixes one line, and now that one fixed line
is indented correctly but differently.
When it gets *too* bad, we just reindent the whole file, but more
commonly when I notice it in a diff, I just edit that particular region
or even just the diff itself in-place.
Generally, it seldom comes to even that. Doing a
git grep ' ' -- '*.c'
(that's now eight spaces) returns quite a lot of lines, and it's generally
not worth worrying about (not all of them are indentation - people do use
spaces for lining things up etc - but a lot of it really is just indents
done against the coding style).
> I was about to tell you that you're full of it, but there really is a
> slowdown:
> [ ... ]
> It's actually about 16%.
I didn't even time it, and I called it at 20% without even counting any
tabs. Why? Because it's inevitable!
It so happens that "grep" has a lot of really clever heuristics, so that
it is actually better at passing over characters that it knows cannot
start the pattern you are searching for, so timing "grep" is actually
quite complex in the general case. So I bet that if you had grepped for
something that started with a space, you'd probably have found a bigger
slowdown.
But ignore all that complexity, and it really boils down to a really
simple principle: bigger data sets are more expensive, and "linear
slowdown" is actually almost the best possible case. Quite often, a bigger
data set causes *worse* than a linear slowdown.
It's very seldom the case that you grow some problem space and performance
stays the same.
> Gah, I can't believe I've not only been sucked into a tab vs spaces
> discussion, but now I've actually wasted time doing a performance
> comparison on it.
Well, performance analysis isn't exactly a "waste". That "git grep" was
something we spent some time trying to go fast (for example, doing the
whole external grep tool thing because that thing is usually optimized to
h*ll and back - so the execve() overhead is more than worth it).
And it's a real workload. Maybe others don't use "git grep" quite as much
as I do, but I do it *all* the time. Some other people probably use ctags
or something, I personally prefer just a fast git grep.
But the *exact* same issues will show up for "simple" things like "git
bisect". One of the biggest costs of git bisect is actually checking out
the source tree. If the source tree is on the order of 20% larger, what
does that mean?
So it doesn't matter if you have a terabyte disk. Source code size *still*
matters.
And 20% (or 16%) is more than a lot of other optimizations can help you
save!
> As an aside, that commit was enough to trigger a "git-gc --auto", which
> was my first experience with it. It's actually kind of annoying
> (especially since I was about to repack -a -d).
Yeah, I don't think it's wonderful, but it might even be a good thing as a
"hey, at least you are aware of the notion of GC now" kind of introduction
to people (who then hopefully realize that they don't actually want
automatic GC, but rather do it once a week or something).
Linus
^ permalink raw reply
* Re: A note from the interim Git maintainer
From: Eric Wong @ 2007-10-18 3:03 UTC (permalink / raw)
To: Shawn O. Pearce; +Cc: git, Junio C Hamano, Benoit Sigoure, Eygene Ryabinkin
In-Reply-To: <20071017071329.GY13801@spearce.org>
"Shawn O. Pearce" <spearce@spearce.org> wrote:
> Eric Wong <normalperson@yhbt.net> wrote:
> > Eygene Ryabinkin (2):
> > git-svn: respect Subversion's [auth] section configuration values
> > git-svn: use "no warnings 'once'" to disable false-positives
>
> I apparently already had that first one from Eygene ("[auth]
> section") in spearce/master; it went out last night. Perhaps you
> ran the shortlog above against Junio's tree and not mine?
Exactly, it was late :)
--
Eric Wong
^ permalink raw reply
* Re: On Tabs and Spaces
From: Jeff King @ 2007-10-18 3:00 UTC (permalink / raw)
To: david; +Cc: Linus Torvalds, Luke Lu, Christer Weinigel, Tom Tobin, git
In-Reply-To: <Pine.LNX.4.64.0710172002020.10276@asgard.lang.hm>
On Wed, Oct 17, 2007 at 08:03:51PM -0700, david@lang.hm wrote:
>> This might matter if I'm comparing non-diff code to diff code. But in a
>> diff, _everything_ is indented by exactly one space, so it all lines up.
>> Is there something I'm missing?
>
> if the code uses a tab and the patch uses 8 spaces the two will not line up
> in the diff becouse in the diff output the tab is 'only 7 spaces;
>
> useing one or the other isn't the problem, it's the mixing of the two.
Yes, obviously. The people who advocate mixing really _are_ objectively
wrong. But I was talking about all-spaces versus all-tabs.
-Peff
^ permalink raw reply
* Re: On Tabs and Spaces
From: david @ 2007-10-18 3:03 UTC (permalink / raw)
To: Jeff King; +Cc: Linus Torvalds, Luke Lu, Christer Weinigel, Tom Tobin, git
In-Reply-To: <20071018024553.GA5186@coredump.intra.peff.net>
On Wed, 17 Oct 2007, Jeff King wrote:
> On Wed, Oct 17, 2007 at 05:59:27PM -0700, Linus Torvalds wrote:
>
>> It happens. We do de-spacification in the kernel occasionally when it is
>> an annoyance. Usually it shows up in patches, though - exactly because
>> code which adds spaces instead of tabs won't line up correctly in the
>> diff.
>
> You have made this claim several times, and I really don't understand
> it. If I have 8 spaces, then a diff line will have either " ", "+", or
> "-" followed by 8 spaces. If I use a hard tab, then the tab will end up
> only taking up 7 spaces because of the nature of tabs.
>
> This might matter if I'm comparing non-diff code to diff code. But in a
> diff, _everything_ is indented by exactly one space, so it all lines up.
> Is there something I'm missing?
if the code uses a tab and the patch uses 8 spaces the two will not line
up in the diff becouse in the diff output the tab is 'only 7 spaces;
useing one or the other isn't the problem, it's the mixing of the two.
David Lang
^ permalink raw reply
* Re: On Tabs and Spaces
From: Jeff King @ 2007-10-18 2:45 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Luke Lu, Christer Weinigel, Tom Tobin, git
In-Reply-To: <alpine.LFD.0.999.0710171753020.26902@woody.linux-foundation.org>
On Wed, Oct 17, 2007 at 05:59:27PM -0700, Linus Torvalds wrote:
> It happens. We do de-spacification in the kernel occasionally when it is
> an annoyance. Usually it shows up in patches, though - exactly because
> code which adds spaces instead of tabs won't line up correctly in the
> diff.
You have made this claim several times, and I really don't understand
it. If I have 8 spaces, then a diff line will have either " ", "+", or
"-" followed by 8 spaces. If I use a hard tab, then the tab will end up
only taking up 7 spaces because of the nature of tabs.
This might matter if I'm comparing non-diff code to diff code. But in a
diff, _everything_ is indented by exactly one space, so it all lines up.
Is there something I'm missing?
> So it doesn't matter *which* one you use (all spaces or all tabs) in that
> sense.
Yes, I agree with that (even with an all-tabs policy, there are still
mangled and incorrect patches that come in -- and the maintainer rejects
or fixes them).
Which was what I was trying to point out with my question (though I was
also curious to hear your answer): all-space versus all-tab is largely a
matter of preference. And that means that people who want git to change
to _their_ preference are just being silly.
> And smaller *is* faster. Do something like this on the kernel:
>
> GIT_PAGER= time git grep sched_fair
>
> and then do the same thing with the kernel sources blown up by 20% by
> de-tabification. Guess which one is 20% slower?
I was about to tell you that you're full of it, but there really is a
slowdown:
$ cd linux-2.6
$ GIT_PAGER= time git grep sched_fair >/dev/null
0.34user 0.94system 0:01.30elapsed 98%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+7548minor)pagefaults 0swaps
$ find . -name .git -prune -o -type f | xargs perl -pi -e 's/\t/ /g'
$ git-commit -a -m de-tabify
$ git-repack -a -d
$ GIT_PAGER= time git grep sched_fair >/dev/null
0.42user 1.06system 0:01.54elapsed 96%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+7591minor)pagefaults 0swaps
It's actually about 16%.
Gah, I can't believe I've not only been sucked into a tab vs spaces
discussion, but now I've actually wasted time doing a performance
comparison on it.
As an aside, that commit was enough to trigger a "git-gc --auto", which
was my first experience with it. It's actually kind of annoying
(especially since I was about to repack -a -d).
-Peff
^ permalink raw reply
* Re: bug: origin refs updated too soon locally
From: Perry Wagle @ 2007-10-18 1:43 UTC (permalink / raw)
To: Perry Wagle; +Cc: git
In-Reply-To: <8CEF6150-4BE7-4B4D-B58C-12CE4671007E@cs.indiana.edu>
I take it back. A git-pull is not a workaround if the ref moved on
the remote end.
-- Perry
On Oct 17, 2007, at 6:35 PM, Perry Wagle wrote:
> If I clone a remote repository, make a few commits, push them to
> the remote repository, and the update hook on the remote repository
> rejects them (exit 1), the local origin refs are still updated as
> if the push had gone through. The workaround is to do a pull to
> set the origin refs back.
>
> -- Perry
> -
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* bug: origin refs updated too soon locally
From: Perry Wagle @ 2007-10-18 1:35 UTC (permalink / raw)
To: git
If I clone a remote repository, make a few commits, push them to the
remote repository, and the update hook on the remote repository
rejects them (exit 1), the local origin refs are still updated as if
the push had gone through. The workaround is to do a pull to set the
origin refs back.
-- Perry
^ permalink raw reply
* Re: [PATCH 0/7] Bisect dunno
From: David Symonds @ 2007-10-18 1:24 UTC (permalink / raw)
To: Johannes Schindelin
Cc: Linus Torvalds, Geert Bosch, Wincent Colaiuta, Johan Herland, git,
Marius Storm-Olsen, Christian Couder, Ren? Scharfe, Junio Hamano
In-Reply-To: <Pine.LNX.4.64.0710180045160.25221@racer.site>
On 18/10/2007, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
> Hi,
>
> On Wed, 17 Oct 2007, Linus Torvalds wrote:
>
> > Well, this has been debated to death, but I actually think that "skip"
> > is a good choice, exactly because it's an action.
>
> Could we, _please_, first decide if the implementation has merits, and
> just apply it as is in that case? We can rename it whatever anybody likes
> later, and we can paint the bikeshed brown if you want to.
I figured with something like this, it'd be a lot easier to get the
colour right first, since command UI is harder to repaint if it gets
widely adopted. Anyway, I think the patch itself is a very good
feature.
Dave.
^ permalink raw reply
* Re: On Tabs and Spaces
From: Linus Torvalds @ 2007-10-18 0:59 UTC (permalink / raw)
To: Jeff King; +Cc: Luke Lu, Christer Weinigel, Tom Tobin, git
In-Reply-To: <20071018003256.GA5062@coredump.intra.peff.net>
On Wed, 17 Oct 2007, Jeff King wrote:
>
> In what way does an all-space model cause people to accidentally add
> tabs, but an all-tab model does not cause people to accidentally add
> spaces?
It happens. We do de-spacification in the kernel occasionally when it is
an annoyance. Usually it shows up in patches, though - exactly because
code which adds spaces instead of tabs won't line up correctly in the
diff.
So it doesn't matter *which* one you use (all spaces or all tabs) in that
sense. But clearly tabs are *way* more common at least in any UNIX
project, and tabs really do have the advantage of being smaller.
And smaller *is* faster. Do something like this on the kernel:
GIT_PAGER= time git grep sched_fair
and then do the same thing with the kernel sources blown up by 20% by
de-tabification. Guess which one is 20% slower?
And whoever said that disk space doesn't matter doesn't know what he is
talking about. Disk space most *definitely* matters. Do the above test
with a cold-cache case, and think what 20% more IO does to you (or 20%
less disk cache).
But no, the size issues are secondary, I'm not claiming anything else.
Although I do suspect that historically, they have been primary, and have
been the thing that has resulted in the fact that tabs are so commonly
used.
Linus
^ permalink raw reply
* Re: On Tabs and Spaces
From: Jeff King @ 2007-10-18 0:32 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Luke Lu, Christer Weinigel, Tom Tobin, git
In-Reply-To: <alpine.LFD.0.999.0710170849590.26902@woody.linux-foundation.org>
On Wed, Oct 17, 2007 at 08:53:55AM -0700, Linus Torvalds wrote:
> > Well, we just established that all-space is perfect, look-wise.
>
> But we also established that an all-space model is not stable, because any
> unix developers will start adding tabs instead of spaces.
In what way does an all-space model cause people to accidentally add
tabs, but an all-tab model does not cause people to accidentally add
spaces?
-Peff
^ permalink raw reply
* Re: On Tabs and Spaces
From: Christer Weinigel @ 2007-10-18 0:31 UTC (permalink / raw)
To: Johannes Schindelin; +Cc: Linus Torvalds, Tom Tobin, git
In-Reply-To: <Pine.LNX.4.64.0710180040320.25221@racer.site>
On Thu, 18 Oct 2007 00:44:22 +0100 (BST)
Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
> Hi,
>
> On Thu, 18 Oct 2007, Christer Weinigel wrote:
>
> > I'm not that invisible am I?
> >
> > cd linux-2.6.22.7
> > find . -type f | xargs egrep -il "weinigel" | wc -l
> > 17
>
> File or directory not found.
>
> We are not Linux specific here. Besides, I was talking about _git_
> source code, just in case I did not make myself clear.
You do not have a sense of humor, do you? And you elided the paragraph
where I said that I haven't contributed anything to git so far. :-/
> > [...] and privately I use CVS just because I started using CVS ten
> > years ago and haven't bothered to change.
>
> I wonder why you have to leave your hideout and comment on the source
> code of _git_, then. I mean, why do _you_ care? (It should have
> become apparent to you that _we_ care, so it looks even more like you
> wanted to dictate a policy on git, which you have no business with.)
Where did I say that I'm not interested in git? If I weren't I
wouldn't have been reading this mailing list since it was first
created. The reason I don't use git is a lack of time. Professionally
I usually have no need to use git since my employer doesn't use it.
On my own time, I haven't even had time and energy to switch away from
CVS, even though I ought to have done that years ago. I dabble a bit
with git, mercurial, org bitkeeper (or did at least) when I need to
access something out on the net which is stored in such a repository,
but I haven't switched any of my projects over to using anything else.
I'm definitely interested in git, and it's interesting to read the
mailing list to see where git is going. And I'd definitely like git to
move in a direction where it's usable for me, or even better, where I
can recommend it to my (often Windows-only) colleagues.
And once again you cut out the part where I said that git is Junio's
baby, he decides what goes into the main git tree, and if he says 8
wide hard tabs, that it is. I haven't argued against that at all. So
I'm wondering why you are trying to project things I haven't
said on me.
/Christer (pissing contensts are silly, so why the hell am I getting
involved in one?)
^ 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