On Sun, 16 Sep 2007, Daniel Barkalow wrote:my initial thoughts were to have git do all it's normal work and hook into git at the point where it's writing the file out (where today it chooses between writing the data to a file on disk, pipeing to stdout, or pipeing to a pager) by adding the option to pipe into a different program that would deal with the permission stuff. this program would only have to write the file and set the permissions, it wouldn't have to know anything about git other then where to find the permissions it needs to know. it sounds like you are suggesting that the hook be much earlier in the process, and instead of one copy of git running and calling many copies of the writing program, you would have one copy of the writing program that would call many copies of git. I'll admit that my initial reaction is that it's probably a lot more expensive to do all the calls into git. git just has a lot more complex things to do. if this functionality does shift to earlier in the process, how much of the git logic needs to be duplicated in this program? if this program needs to do the merge, won't it have to duplicate the merge logic, including the .gitattributes checking for custom merge calls? I have been thinking primarily in terms of doing a complete checkout, overwriting all files, and secondarily how do do a checkout of just a few files, but again where all files selected overwrite the existing files. I wasn't thinking of the fact that git optimizes the checkout and avoids writing a file that didn't change. this changes things slightly prior to this I was thinking that the permission file needed to be handled differently becouse writing it out needed to avoid doing any circular refrences where you would need to check the contents of it to write it out. it now appears as if what really needs to happen is that if the permission file changes a different program needs to be called when it's written out then when the other files are written out. by itself this isn't hard as .gitattributes can have a special entry for this filename and that entry can specify a different program, and that program fixes all the permissions (and/or detects that they can't be fixed due to user/filesystem limits, records the error, checks if the repository is set appropriately, and screams to the user if it isn't) it would be a nice optimization to this permission checkout for it to compare the old and the new permissions so that it only tries to change the permissions where it needs to, but is that really nessasary? the program can look at the permissions of the existing files to see what they are and decide if it needs to change them (this would tromp on local changes that aren't checked in. how big of a problem is this?) my initial reaction is that having to know the two commits and do the comparison between them is adding a lot of logic and git interaction that I'd rather avoid if I could. David Lang - 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
| Hiten Pandya | Re: up? (emacs docbook xml ide) |
| Greg Kroah-Hartman | [PATCH 004/196] Chinese: add translation of SubmittingPatches |
| debian developer | Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3 |
| Jan Engelhardt | intel iommu (Re: -mm merge plans for 2.6.23) |
git: | |
| Gerrit Renker | [PATCH 03/37] dccp: List management for new feature negotiation |
| Ingo Molnar | iwlwifi: fix build bug in "iwlwifi: fix LED stall" |
| David Miller | Re: [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
