Re: [PATCH 1/2] Introduce git-run-with-user-path helper program.
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:41:57
quoted
quoted
quoted
quoted
"PB" == Petr Baudis [off-list ref] writes:
quoted
+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.
quoted
+/****************************************************************/ + +/* 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.