From: Carl Worth <cworth@cworth.org>
To: Michael Niedermayer <michaelni@gmx.at>
Cc: git@vger.kernel.org
Subject: Re: FFmpeg considering GIT
Date: Fri, 04 May 2007 11:17:05 -0700 [thread overview]
Message-ID: <87y7k4lahq.wl%cworth@cworth.org> (raw)
In-Reply-To: <loom.20070504T143538-533@post.gmane.org>
[-- Attachment #1: Type: text/plain, Size: 4182 bytes --]
On Fri, 4 May 2007 13:46:28 +0000 (UTC), Michael Niedermayer wrote:
> well, my example above was exagerated, noone ever reindented the whole
> ffmpeg or checked in a old version over HEAD. what did and does occasionally
> happen is that people check in several things at once (like a 100k reindenton
> mixed with various functional changes)
That sounds like an opportunity to educate your contributors a bit on
what good commits should look like. So I think this is more a social
issue than a technical issue, (but git has some technical means that
make it much easier to address the social issues).
Your description above makes an assumption that there is a single
central repository that multiple people push changes into, (which is
really the only way to organize a project with svn or cvs). And with
those systems all you get is a bit than you can flip on for whether
you trust someone to push changes into the repository or not. But git
is much more flexible than that.
The opposite extreme is to organize the project in a way similar to
the linux kernel---all contributors maintain their own repositories
and things get merged only when a maintainer reviews and pulls. With
this approach, garbage never lands in your own repository by
definition, (since you don't pull if it looks like garbage to you). So
that solves the problem, but this organization might seem too radical
a shift for your project.
Fortunately, git is flexible enough to do things in between as
well. For example, you can have a central repository where multiple
people push changes, and also have personal repositories. Git reduces
the cost of creating a new personal repository to basically zero, so
you can use these quite freely. They make a great place for new
contributors to publish changes where the more experienced maintainers
can review and educate the new contributors on mistakes like you
describe above.
So with this, you can let people play in their own repositories while
they're still learning the cultural aspects of what code should look
like. I've found that new contributors really like the freedom this
gives them, (there's no fear that they are going to break anything
this way, since they are relying on others to review and pull at
first). So the trust relationship can grow as you work together,
(which is how it should be).
And that whole relationship-building happens while you're both
benefiting from the support of the tool, (not like cvs or svn where
the new contributor is cut off from almost all help from the tool
until you flip the "absolute trust" bit).
> well if git blame and others could somehow be told to automatically ignore
> nonsense changes and matching nonsense reverts that would be great
> maybe by searching for some keyword in the revert message?
That sounds like a bad technical workaround for a problem that really
shouldn't exist. You should look for ways to create the history you'd
really like to have rather than trying to find a way to get the tool
to ignore the history that's actually there.
Sure, mistakes will happen. Just learn to live with that.
Oh, and I also think the emphasis on "blame" is due to a lack of other
more powerful history exploration features in other systems. For
example, the fact that "git log" can filter based on subsets of the
directory tree:
git log -p -- some/directory
or by content of the patches themselves:
git log -p -S'snippet of interest'
[*]
is often just plain more powerful than blame is, and it makes it quite
trivial to skip past any noise, (since you get the complete history of
what you care about, not just information about the last time a line
in a file got touched).
For example, I often use git-log to find out what happened to code
that used to be in the file, but doesn't appear there anymore. That's
simple to do with git log, (sometimes even just plain "git log -p" and
searching with the pager), but it's something that something like cvs
or svn blame just fundametally cannot even help with.
-Carl
[*] I just noticed that -S isn't mentioned in the documentation for
git-log at all, (though, oddly enough, a 'git log -S' example is
provided in the git-blame documentation).
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
next prev parent reply other threads:[~2007-05-04 18:17 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-05-02 9:29 FFmpeg considering GIT Panagiotis Issaris
2007-05-02 23:48 ` Jakub Narebski
2007-05-03 1:03 ` Petr Baudis
2007-05-04 0:42 ` Jakub Narebski
2007-05-04 7:21 ` [RFC?] Telling git about more complex relationships between commits (Was: Re: FFmpeg considering GIT) Johan Herland
2007-05-04 9:36 ` Alex Riesen
2007-05-04 11:39 ` Andy Parkins
2007-05-04 12:06 ` Andrew Ruder
2007-05-04 12:30 ` Johan Herland
2007-05-04 11:53 ` Johan Herland
2007-05-04 22:11 ` Alex Riesen
2007-05-05 12:49 ` Johan Herland
2007-05-05 18:03 ` Alex Riesen
2007-05-05 16:13 ` Johan Herland
2007-05-04 11:10 ` Petr Baudis
2007-05-04 12:22 ` Johan Herland
2007-05-03 1:48 ` FFmpeg considering GIT Martin Langhoff
2007-05-03 18:00 ` Uwe Kleine-König
2007-05-03 20:00 ` Petr Baudis
2007-05-03 20:05 ` david
2007-05-03 20:13 ` Petr Baudis
2007-05-04 13:46 ` Michael Niedermayer
2007-05-04 15:53 ` Andy Parkins
2007-05-04 16:09 ` Johannes Sixt
2007-05-04 17:23 ` Florian Weimer
2007-05-04 16:40 ` Nicolas Pitre
2007-05-04 18:17 ` Carl Worth [this message]
2007-05-04 18:25 ` Johan Herland
2007-05-04 20:24 ` Michael Niedermayer
2007-05-05 4:15 ` Linus Torvalds
2007-05-05 13:35 ` Karl Hasselström
2007-05-05 17:26 ` Linus Torvalds
2007-05-05 22:18 ` Linus Torvalds
2007-05-05 22:30 ` Linus Torvalds
2007-05-06 7:49 ` Junio C Hamano
2007-05-07 12:13 ` Paul Mackerras
2007-05-07 12:30 ` Karl Hasselström
2007-05-07 12:50 ` Johan Herland
2007-05-07 12:56 ` Alex Riesen
2007-05-08 6:30 ` Marco Costalba
2007-05-09 4:28 ` Paul Mackerras
2007-05-09 6:38 ` Marco Costalba
2007-05-09 18:17 ` Robin Rosenberg
2007-05-09 18:28 ` Jan Hudec
2007-05-09 21:09 ` Fredrik Kuivinen
2007-05-09 21:36 ` Jan Hudec
2007-05-10 11:20 ` Marco Costalba
2007-05-10 16:52 ` Jan Hudec
2007-05-07 17:52 ` Jan Hudec
2007-05-07 22:10 ` Gábor Farkas
2007-05-07 23:21 ` Randal L. Schwartz
[not found] ` <fcaeb9bf0705080707x7ad28afelf98ecd93276042d1@mail.gmail.com>
2007-05-08 15:53 ` Gábor Farkas
2007-05-07 19:10 ` Junio C Hamano
2007-05-08 2:03 ` Shawn O. Pearce
2007-05-08 7:26 ` Jeff King
2007-05-06 7:56 ` Karl Hasselström
2007-05-06 10:19 ` Karl Hasselström
2007-05-06 16:38 ` Linus Torvalds
2007-05-06 8:15 ` Marco Costalba
2007-05-06 11:14 ` Karl Hasselström
2007-05-06 12:19 ` Marco Costalba
2007-05-06 12:33 ` Karl Hasselström
2007-05-06 12:33 ` Marco Costalba
2007-05-06 12:59 ` Karl Hasselström
2007-05-06 13:03 ` Karl Hasselström
2007-05-09 22:30 ` Pavel Roskin
-- strict thread matches above, loose matches on Subject: below --
2007-05-08 3:39 Brett Schwarz
2007-05-08 4:06 ` Paul Mackerras
2007-05-08 4:19 ` Shawn O. Pearce
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87y7k4lahq.wl%cworth@cworth.org \
--to=cworth@cworth.org \
--cc=git@vger.kernel.org \
--cc=michaelni@gmx.at \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).