在我导入的存储库的.gitconfig
文件中定义了以下GIT过滤器。
[filter "csprojarrange"]
clean = CsProjArrange
但是,只有当CsProjArrange.exe
是我的PATH的一部分时,它才起作用,而如果CsProjArrange.exe
被检入到存储库的根目录中,它就不起作用。
有可能让GIT过滤器在相对目录上工作吗?
您可以使用这样的东西:
[filter "csprojarrange"]
clean = $PWD/CsProjArrange
这里,$PWD
是您当前的工作区目录。之后,您可以根据需要设置路径。例如,如果CsProjArrange在位置workspaceroot/dir1/dir2/CsProjArrange
的wrokspace中可用,则可以设置。。。
[filter "csprojarrange"]
clean = **$PWD/dir1/DIR2/CsProjArrange**
正如我在评论中提到的,Git不这样做的一个重要原因是它存在巨大的安全风险。
使用当今的工具和技术,减轻这种风险的明显方法是运行回购内过滤器,前提是该过滤器具有有效的数字签名(即PGP/GPG签名。也就是说,您的.gitattributes
文件将为:
[filter "csprojarrange"]
clean = helper-check-git-signature CsProjArrange
或类似的。同时,helper-check-git-signature
将是一个你必须独立于Git和任何存储库安装的程序;但你只需要安装一次。(也许你的操作系统有一些合适的东西,因为这种数字签名技术是一些手机操作系统审查应用程序的方式,尽管他们倾向于在下载过程中审查一次,而不是在每次过滤器运行时。)
助手的工作是在存储库中定位文件,验证是否可以运行,然后运行它。由于助手安装在计算机的"受信任"部分(例如,Linux上的/usr/local/bin
或$HOME/bin
),所以它只是运行。更新存储库中的筛选器时,无需重新安装它。
这里没有"屏蔽"的部分是助手如何进行验证(如果你有gpg,你可能想使用它,因为它提供了你所需要的所有签名检查和撤销支持),签名本身与回购过滤器的关系,助手如何定位各个部分,等等。也许可以把这样的事情看作是一个商机。:-)