On Jun 11, 2008, at 10:18 AM, Doug Cutting wrote:

David Reiss wrote:
Git is set up. Info here: http://wiki.apache.org/thrift/ GitRepository

I need to figure out how Git fits into the Apache development style. Git has not been used much at Apache, certainly not in any project that I've been involved in. I also have never used Git and speak largely from ignorance.

Actually Git is pretty much a superset of subversion. I have quite a bit experience with both pure git open source project and git-svn at work to know that they can coexist seamlessly, with git users having more freedom and convenience in their ways of development.

It should be noted that there have been flamewars within Apache about the use of Git, and many feel that it doesn't belong here. I don't want this discussion to degenerate that way, and am trying to address this with an open mind and hope that others will too.

Apache places building better community over better code as the highest priority of a project. Healthy communities build better code long-term (or something like that). One of the hallmarks of Apache communities is transparency in communications, providing a level playing field for all members of the community. For example, IRC is acceptable for casual conversations, but decisions about changes to the project must be made on project mailing lists, so that everyone, no matter timezone, etc., can contribute to the discussion equally. It's also important to have a single venue for discussion, patches, bugs, etc., so that everyone sees the same information.

Some projects operate in a review-then-commit (RTC) mode, where, before a patch may be committed it must be reviewed by another committer. Other projects operate in commit-then-review (CTR), where committers are expected to monitor commit messages and can veto changes retroactively. (Some projects use different modes for trunk than release branches.)

http://www.apache.org/foundation/glossary.html#CommitThenReview

I've mostly worked on RTC projects. In this case, it is important that each patch is equally visible and easily applicable by every committer. If some developers are using Git and some are not, how will this work? Will every patch still be posted as a flat file in Jira?

The development model of Git itself is RTC. Git fits the model perfectly. Git patches has more information (author and its parent commits) so that they can be merged with less pain than vanilla patches. Attaching vanilla patches to Jira is a very backward way (I tried to follow SOLR-303 and it was not pretty) of sharing patches. One of the easiest ways for Git users to share repository currently is using github.com (I think David needs to update that one as well for post conversion repository). People can look at a series patches easily using its web interface or they can simply post the patches to a mailing list. The maintainer of official repository can quickly merge from Git contributors' reviewed branches with the proper credit and history *automatically*. The subversion + patches model places much more burdens on "committers" who need to apply the patches and maintain the credits with much less powerful tools.

One possibility might to declare that all members of the Thrift community will use Git, and that patches will be shared via a shared Git repository. Another possibility is that, in Jira, instead of attaching patches as flat files, one might add links to a patch in the Git repo. However this seems nearly equivalent to using Subversion in CTR mode.

It's not equivalent, as Git patches are not in the official repo before it's merged by the maintainer. The patch urls would point to contributors own public repositories.

So, in summary, non-gitters like myself need to understand how we expect transparent collaboration to function with Git. What is the review model? It is unacceptable to have subsets of the community sharing patches that are not yet available to the entire community. When a patch is first made available for review, it must be made available to all members of the community. Does this mean we all need to use Git

Subversion users can still use the old way, attaching patches to jira and let one of the subversion "committers" apply and commit the changes. Git users would just publish their urls and ask the mailing list to review the patch with better UI and then "maintainers" to pull their changes.

Hope it clear things up a bit.

__Luke

P.S. I use "maintainers" to refer to people like David who maintains the official repository, as everyone is a committer in Git.

Reply via email to