From: Junio C Hamano Date: Tue, 17 May 2005 19:27:03 GMT Subject: Re: [PATCH 1/2] Introduce git-run-with-user-path helper program. Message-ID: <7vk6lxfybc.fsf@assigned-by-dhcp.cox.net> In-Reply-To: <20050517190355.GA7136@pasky.ji.cz> >>>>> "PB" == Petr Baudis writes: >> +int path_ignored(const char *path) >> +{ >> + if (!verify_path(path)) >> + return 1; >> + >> + /* Put the Porcelain layer ignore logic here. >> + * Return non-zero if path is to be ignored. >> + */ >> + return 0; >> +} PB> I actually think you shouldn't. All the Porcelain layers should PB> hopefully use the same git toolkit layer, not each one shipping own due PB> to differences in things like this. What you said above _is_ exactly my intention. I phrased that comment very badly. It should have said: /* We _will_ put the "ignore logic Porcelain layers agree upon" * here, once we have a concensus. * * The code should return non-zero if path is to be ignored. */ I did not put any implementation there because I do not think we have agreed upon anything yet. This patch is to establish the framework. The second patch is separate, because it is _my_ version of the ignore logic proposal, to serve as a sample. Whatever ignore logic is agreed upon, that _will_ be in the place you pointed out and there will be no choice. Everybody _will_ use the ignore logic. >> +/****************************************************************/ >> + >> +/* Path canonicalization part */ PB> And why is this in the library? Why not? It is something other programs would eventually find useful. Also the second patch, a sample implementation of ignore logic I proposed, wants to know GIT_PROJECT_TOP to figure out the file pointed at by GIT_DIR/.git/info/ignore-file. Also it would not hurt if you are always running from the project top and give only verify_path() approved paths. Then canon_path would become identity function. git-run-with-user-path is useful both in implementing porcelain-add if the porcelain's policy is to take filesystem paths not GIT paths, like this: #!/bin/sh # porcelain-add exec git-run-with-user-path git-update-cache --add -- -- "$@" Also if the porcelain's policy is to take GIT paths not filesystem paths, then users can say: $ find . ! -type d -print0 | xargs -0 git-run-with-user-path cg-add -- You cannot use both for obvious reasons.