- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想在我的 git 存储库中应用此过滤器,以便在 checkout 期间从解决方案文件中删除一个部分,并在提交期间添加该部分。
这是我要删除或添加的部分:
GlobalSection(SubversionScc) = preSolution
Svn-Managed = True
Manager = AnkhSVN - Subversion Support for Visual Studio
EndGlobalSection
我在我的 .git/info/attributes 中设置了这个过滤器
*.sln filter=SourceControlProvider
并且我已经将这些命令添加到我的配置中
$ git config filter.SourceControlProvider.smudge "sed -e '/GlobalSection(SubversionScc)/,/EndGlobalSection/d' %"
$ git config filter.SourceControlProvider.clean "sed -n -e '/^Global$/ r ankhsvnsection ' < %"
嗯,这行不通。我做错了什么?
ankhsvnsection 是一个文本文件,与 *.sln 文件位于同一目录中
最佳答案
我在这里看到了一些问题:
两个过滤器的末尾都有 %
。
这没有特殊含义,将作为额外参数传递给 sed,这可能会产生错误(除非您有一个名为 %
的文件)。
过滤器应该是“流式”的(从标准输入读取并写入标准输出)。它们的定义可以包括%f
,但它不应该真正被当作一个文件来读取或写入; Git 负责这部分工作,过滤器应该只从标准输入读取并写入标准输出。
您的清理过滤器尝试从 %f
重定向标准输入。
输入数据已经在标准输入上,无需重定向。
clean 过滤器中的 sed 程序使用 r
命令访问另一个文件。
过滤器似乎是从工作树的根运行的,但我不确定这是否得到保证。
清理过滤器中的 sed 命令使用 -n
。它的唯一输出将是 ankhsvnsection
文件的内容(假设输入有一个 Global
行)。
某些版本的 sed(至少是 Mac OS X 中的(旧)BSD 版本)不允许在 r
命令的文件名后有空格(即 clean 过滤器的 sed 程序中 ankhsvnsection
之后的空格)。
添加、更改或删除过滤器后,您可能需要在 Git 应用过滤器之前触摸、修改或删除您的工作树文件。 Git的索引记录了工作树文件的修改时间;如果它们没有改变,那么 Git 会将 git checkout -- file
和 git add file
翻译成空操作。
如果你想查看索引的实际内容(例如检查 clean 过滤器生成的内容),你可以使用 git show :0:path/from/repo/root/to/file
。您通常不能为此使用 git diff
,因为它也会应用过滤器。
这些对我有用:
git config filter.SourceControlProvider.smudge "sed -e '/GlobalSection(SubversionScc)/,/EndGlobalSection/d'"
git config filter.SourceControlProvider.clean "sed -e '/^Global\$/ r ankhsvnsection'"
关于git - 这个 git smudge/clean 过滤器有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5380634/
假设我想在编译项目之前将项目本地依赖项(jar 文件)安装到本地 Maven 存储库 (~/.m2),这样我就可以在 POM 中引用它们,就像引用 Maven 中的任何依赖项一样中央。目前,我正在使用
我需要使用 Clean 编程语言列出目录中的所有文件,但我不知道这样做的任何函数。有人可以帮助我吗? 最佳答案 您可以使用 Directory module 中的函数 getDirectoryCont
我的应用程序工作正常,我能够使用 jar 执行 mvn clean install并能够执行 jar 文件,但我将其更改为 war 文件,但我无法执行 mvn clean install . 这些之间
我是 Maven 的初学者。当我点击 clean & Build 在 netbeans 中重建我的项目时,它抛出一个错误 Failed to execute goal org.apache.maven
我已经为我的一些模型覆盖了 clean() 方法来构造约束以满足我的数据库架构要求(因为它需要运行时信息来进行这些验证)。 从现在开始,我已经完成了大部分后端组件(模型、信号、..),现在我正在尝试编
从 Android Studio 项目的终端发出以下语句有什么区别: Android_Studio_Project_Path: ./gradlew clean Android_Studio_Proje
我曾在不同的团队工作过,在一个团队中,人们倾向于在合并旧分支后立即清理它们。在其他团队分支永远停留。删除/保留旧分支有什么好处?这是否取决于我们使用的源代码控制系统? (在我的情况下 - SVN)。
我有一个相当复杂的(iPhone SDK)Xcode 项目,有很多目标——4 个静态库、单元测试、多个示例应用程序、一个运行 shell 脚本的 BuildAll 以及一个运行另一个 shell 脚本
我有一个 cucumber 项目,当您单独运行 cucumberrunner 文件时,该项目运行良好 [运行方式 -->Junit 测试]。 当我尝试使用 maven 命令运行相同的文件时,它失败了:
我在 cruiseControl 中有一个 msbuild 任务,它首先清除然后重建。如果我将其更改为“清理并构建”(而不是重建),会有什么不同吗? Rebuild 为每个项目执行“清理 + 构建”。
我对 Clean Architecture 中的 Gateway to Entity 依赖有疑问。我认为以下同心圆图形经常被介绍为整洁的架构。 在上图中,Gateway并没有直视Entity。但是,还
我使用M2e + Eclipse + Maven,我想知道两者之间的区别: 在终端和中运行“mvn clean” 从Eclipse 运行“干净的项目”吗? 有人可以请教吗? 最佳答案 通过一些快速测试
我试图弄清楚 package.json 脚本部分中“clean:dist”或“clean:js”与“clean”的作用?我在网上搜索并查看了NPM documentation但找不到任何线索。那么有人
我在 Linux 上的构建过程有一个小问题。 无论出于何种原因,在我的代码中,如果我发出“make clean”命令,Linux 会生成一个名为“clean”的文件。问题是我的项目的 makefile
mvn clean package和mvn clean install到底有什么区别?当我运行这两个命令时,它们似乎都在做同样的事情。 最佳答案 好吧,两者都会清理。这意味着他们将删除目标文件夹。真正
您在每个应用程序的开发过程中都遇到了某个时刻,您在模拟器中看到的内容与您认为应该发生的情况不符。这些大多是人为错误——或者至少在大多数我的案例中是这样的;-)——但有时 Xcode 只是“迷失了方向”
我使用这两个命令来解决我项目中的依赖问题。 mvn -U clean compile解决的问题。但我不知道它们之间的区别。请解释这些命令之间的区别以及我何时使用 mvn clean compile和
我正在为我的项目使用 Maven。如果我的项目不使用某些本地资源,这不是问题。 以便我遵循本指南 https://stackoverflow.com/a/61576687/6720896 将我的本地
我正在尝试创建一个 Grunt 任务来清理目录中的所有文件、子目录及其文件等。 我可以删除所有文件,但文件夹始终保留。 clean: { preview: ["live_previe
我有以下情况: 我有一个包含几个子项目的项目。今天我尝试通过命令行使用 gradle 构建项目。 执行 ./gradlew clean :build 时构建成功, 但不是 ./gradlew clea
我是一名优秀的程序员,十分优秀!