Re: Git training wheels for the pimple faced maintainer

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On Fri, 20 Oct 2006, Pierre Ossman wrote:
> 
> I'm still learning the more fancy parts of git, but I think that would be:
> 
> git diff master..for-linus | diffstat

Use "git diff -M --stat master..for-linus" instead.

The "-M" enables rename detection, and the "--stat" does the diffstat for 
you (and better than plain diffstat, since it knows about renames, copies 
and deletes).

HOWEVER! The above obviously only really works correctly if "master" is a 
strict subset of "for-linus".

> git log master..for-linus | git shortlog

Yes.

> And in order to test for conflicts, I assume I should have a "test tree"
> that I merge all my local stuff in, together with your current HEAD?

Exactly. It can be either just a random temporary branch (it's cheap), or 
it can just be your "work tree" that you can keep as messy as you want, 
and then the "for-linus" branch is the cleaned-up version. 

And quite frankly, most of the time you don't even really need one. It 
depends on what you work on, but a _lot_ of the kernel is so independent 
of anything else, that you know that the only thing that will ever really 
conflict is trivial things, and hey, one of the things I do is to fix up 
those conflicts.

In fact, quite often the _right_ thing to do for most developers is to 
just entirely ignore what everybody else is doing, because if there are 
trivial conflicts, I'll take care of them, and if there are more serious 
conflicts, I'll just let you know myself - and you may not even be in a 
position to _know_ about it, because the conflicts could come from 
somebody elses git tree that I just happened to pull before.

So don't worry too much about it. As already mentioned, the _worst_ thing 
you can do is probably to continually pull from my tree to "stay on the 
edge". The way we keep the kernel maintainable is not by having everybody 
try to keep up with everybody else, but by trying to keep things so 
independent that people don't _need_ to keep up with everybody else.

A lot of people seem to just synchronize up at major releases, and then 
rebase their work (which they may even have kept in quilt or something 
else: you don't even have to use "git" for this) on that, and ask me to 
merge the result.

So don't worry too much. 

Also - different people work in different ways, and it's _ok_. 

> If I've understood git correctly, a rebase is a big no-no once I've
> published those changes as it reverts some history. Right?

That is mostly correct. It's a big no-no if somebody has already pulled 
from you, and you want them to pull again. Because at that point, you're 
essentially asking them to pull two totally different versions of the same 
thing - git will do the right thing (since all the duplicates will usually 
merge perfectly), but it will look like two different histories, and 
you'll see every commit twice. That's just ugly.

On the other hand, things like the -mm tree are "throw-away" anyway: 
Andrew re-creates the tree every time he pulls. So you can rebase the 
branch you send to Andrew as much as you want. So it's not _entirely_ 
about whether something is "published" or not, it's literally more about 
how something is actively _used_.

But yes - in general, the rule of thumb should be: rebase as much as you 
want in your own _private_ sandbox to make things look nice, but once 
you've exposed it to anybody else, it's set in stone.

> Big thanks for all the pointers. I have my account at kernel.org, so it
> won't be long until my first [GIT PULL]. Be gentle.

Now, I may not be "gentle", because if there is something wrong with the 
end result I'll tell you so and I'm not exactly known for always being 
excessively polite ;)

But don't worry, it can be fixed up. At worst, you'll just get an email 
back saying "I'm not going to pull this one, because you've been a 
complete clutz, and did something really stupid wrt XYZ", and I'll ask you 
to fix it up. Or I might say "I'll pull it this time, but I don't want to 
see XYZ again in the future".

Or I might not say anythign at all, and you'll just notice that I've 
pulled from you.

			Linus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux