GIT过滤器的相对目录?

时间:2017-01-17 16:57:32

标签: git gitattributes git-filter

我在我导入的img1 = imread('I1.bmp'); img2 = imread('I2.bmp'); mag1 = abs(img1); mag2 = abs(img2); phase1 = angle(double(img1)); phase2 = angle(double(img2)); subplot(2, 2, 1); subimage(img1); subplot(2, 2, 2); subimage(img2); FFT1 = fft2(double(img1)); FFT2 = fft2(double(img2)); subplot(2, 2, 3); imshow(log(abs(fftshift(FFT1))), [0 10]); colormap(gray); colorbar; subplot(2, 2, 4); imshow(log(abs(fftshift(FFT2))), [0 10]); colormap(gray); colorbar; 文件中定义了以下GIT过滤器。

.gitconfig

但是,它仅在[filter "csprojarrange"] clean = CsProjArrange 是我的PATH的一部分时有效,而不是在CsProjArrange.exe被检入存储库的根目录时。

是否可以让GIT过滤器处理相关目录?

2 个答案:

答案 0 :(得分:1)

正如我在评论中提到的,Git没有做到这一点的一个重要原因是它存在巨大的安全风险。

使用当今的工具和技术来降低风险的一个显而易见的方法是,当且仅当该过滤器具有有效digital signature(一个PGP / GPG签名)时,才运行内部回购过滤器。也就是说,您的[filter "csprojarrange"] clean = helper-check-git-signature CsProjArrange 文件会显示为:

helper-check-git-signature

或类似的。同时/usr/local/bin将是一个独立于Git和任何存储库安装的程序;但你只需要安装一次。 (也许你的操作系统附带了一些合适的东西,因为这种数字签名技术是一些手机操作系统审核应用程序的方式,尽管他们倾向于在下载期间执行一次,而不是在每次过滤器运行时。)

帮助程序的工作是在存储库中找到该文件,验证可以运行,然后运行它。由于帮助程序安装在计算机的“受信任”部分(例如,Linux上的$HOME/binSelect a.*, x.* from abc a, xyz x, join abc.id = pqr.id AS `joint_table` ),因此它只会运行。更新存储库中的过滤器时无需重新安装。

这里没有“罐装”的部分是帮助者如何进行验证(如果你有gpg,你可能想要使用它,因为它具有你需要的所有签名检查和撤销支持),其中签名本身与in-repo过滤器一起生效,帮助者如何定位各个部分,等等。想想把这样的事情做成商业机会。 : - )

答案 1 :(得分:1)

你可以使用这样的东西:

[filter "csprojarrange"]
  clean = $PWD/CsProjArrange

此处,$PWD是您当前的工作区目录。之后,您可以根据需要设置路径。 例如,如果CsProjArrange在位置workspaceroot/dir1/dir2/CsProjArrange的wrokspace中可用,那么您可以设置...

[filter "csprojarrange"]
  clean = **$PWD/dir1/DIR2/CsProjArrange**