Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法应用git属性筛选器 问题_Git_Perl - Fatal编程技术网

无法应用git属性筛选器 问题

无法应用git属性筛选器 问题,git,perl,Git,Perl,我正在尝试应用中看到的解决方案。我也试着去上班,但两次都没有成功。这两种过滤器都使用“清除/涂抹”属性过滤器 目标是提高Git处理要处理的文件的能力(LaTeX) 我所做的 简短的回答“你做了什么”是“解决方案说要做什么”,但如果我看得太多,我会详细说明 我调查过的一个潜在问题是答案可能已经过时。通过查看,我认为唯一可能过时的是配置文件的位置。因此,我在repo的根目录中既有一个.gittributes文件,也有一个.git/info/attributes文件。我也只试过其中一种 虽然这不是我希

我正在尝试应用中看到的解决方案。我也试着去上班,但两次都没有成功。这两种过滤器都使用“清除/涂抹”属性过滤器

目标是提高Git处理要处理的文件的能力(LaTeX)

我所做的 简短的回答“你做了什么”是“解决方案说要做什么”,但如果我看得太多,我会详细说明

我调查过的一个潜在问题是答案可能已经过时。通过查看,我认为唯一可能过时的是配置文件的位置。因此,我在repo的根目录中既有一个
.gittributes
文件,也有一个
.git/info/attributes
文件。我也只试过其中一种

虽然这不是我希望得到的解决方案,但我认为我应该尝试不止一种,以期更好地识别出哪里出了问题。我选择看一下这个,因为我至少可以让脚本在Git之外工作

在我的配置文件中

 [filter "wordbyword"]
    clean = /home/nero/myScripts/wordbyword.clean
    smudge = /home/nero/myScripts/wordbyword.smudge
我用前面的
vim
将上面的位置复制粘贴到终端中(这样你就知道我没有在那里打字),然后粘贴下面的内容。首先是
清洁
然后是
涂抹
,尽管后者要发挥作用,前者必须起作用。这就是问题所在

#!/usr/bin/perl
use strict;
use warnings;

while (<>)
{
    print "$_\n" foreach (m/(.*?\s+)/go);
    print '#@#DELIM#@#' . "\n";
}
使用属性
*.tex filter=sentencebreak

但是,当我使用
perl-pe“that long line”
运行替换时,它不是在每个句点打印换行,而是在每个空白处打印
\n
(并且不打印句点)。我识别出
\\n
,它似乎正在跳转换行符。将其更改为
\n
会导致它产生换行符,但是它仍然在空白处中断,这不是我想要的


仔细观察perl替换(我不擅长perl),我发现它避开了标点符号。删除额外的
\
“混合”了那部分内容。

我觉得很傻。有人指出有一个拼写错误。在纠正这个错误的过程中,我发现我忘记了/home/nero/.config/.git/attributes中的全局属性文件

这两个项目现在都按预期工作


需要明确的是,问题是太多的配置文件说同样的事情让Git感到困惑。

*.tex filter=wordbyword
(k=>d)。我假设这是对我需要做什么的简短解释,但我不确定我是否理解你所说的“(k=>d)”。哦!我懂了。打字错误。我会把它修好,看看它能不能用。我还将检查另一个(我真正想要的那个)是否有类似的情况。谢谢这并没有解决问题。它仍然什么也没做。谢谢你让我们知道
#!/usr/bin/perl
use strict;
use warnings;

while (<>)
{
    chomp; '#@#DELIM#@#' eq $_ and print "\n" or print;
}
[filter "sentencebreak"]
    clean = perl -pe \"s/[.]*?(\\?|\\!|\\.|'') /$&%NL%\\n/g unless m/%/||m/^[\\ *\\\\\\]/\"
    smudge = perl -pe \"s/%NL%\\n//gm\"