"Sam Ravnborg" <sam@ravnborg.org> writes: > But the primary thing is cg-commit > I give you a list of files modified which can be edited and > it have saved me a couple of times commiting to much. > And I get vi fired up so no need to fiddle with command line argumetns. [this is what I sent in a separate message but I goofed up the destination headers and the message did not appear on the list, so I am reprinting.] I have always felt "git commit paths..." was a mistake; it encourages partial commits by individual developers. By "partial commit", I mean a commit that does not exactly match the state of the working tree when the commit is made. There are two kinds of "partial commits". Good ones and bad ones. Being able to make partial commits is handy for people whose primary role is to integrate many changes from trusted developers rather than testing each and every commit as a whole (read: Linus and subsystem maintainers). Integrators' job may include testing what have been merged as a whole by a compile and reboot cycle as the final "wrap-up" step, but the most important role they play is to sanity check the changes from architectural perspective. For that workflow to work effectively, however, the changes fed by individual developers to the integrators have to be clean and well tested. A partial commit records something that never existed in any working tree as a whole, so by definition it is an untested change. You would risk "sorry I forgot to commit the changes to these paths but without them it does not even compile", and end up wasting integrators' time. The integrators make commits out of their working trees using git-merge and git-apply to record changes made by others after reviewing them. These commands ignore unconflicting local changes (but notices conflicting ones to operate correctly), and allow them to make partial commits. This is a good thing; otherwise they would have to reset their own changes in their working tree, only to do merges and to accept patches. However, people playing the integrator role rarely have reason to use "git commit paths..." while merging from others to make such a partial commit. Only after they resolve conflicts by hand, perhaps. But that happens far less often than careless individual developers making partial commits of bad kind using the same "git commit paths..." command. This is the reason why I feel "git commit paths..." is a bad feature. It helps to make bad partial commits, without having to do much with making good partial commits. Many SCMs may have the ability to do "commit paths...", but that does not change the fact that it encourages carelessness for individual developers, which is especially bad in a distributed development workflow like the Linux kernel style [*1*]. But that was not my change ;-). [Foornote] *1* It could be argued that being able to do partial commit is a good thing in other SCM systems where there is no equivalent to our "index" file. It is one way for the developer to snapshot their work-in-progress state where they might later come back to if the approach they are currently pursuing does not pan out. But for that, we have index file we can "check into" without committing. - 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.htmlReceived on Wed Feb 01 09:22:23 2006
This archive was generated by hypermail 2.1.8 : 2006-02-01 09:22:32 EST