- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
因此,我们拥有数十万行的代码git存储库,自从我两年前加入该项目以来,格式化就困扰了我。这不仅使我感到困扰,而且当开发人员随机“修复” fomratting时, merge 仅在一侧应用代码格式时会令人头疼。现在,重新格式化代码是一个两分钟的任务,但是也会导致 merge 冲突。我最近将master merge 到了一个长期存在的功能分支中,并尝试了以下操作:
master中的
最佳答案
假设配方
(注意:我没有测试过任何一个)
我们假设重新格式化程序位于~/Downloads/android-studio/bin/format.sh
中,并且[注意:显然,这是一个错误的假设!]它会读取stdin并写入stdout,并且一次处理一个文件。 (有可能,但是非常困难,一次要处理多个文件,这是很困难的。但是,在这种情况下,您不能使用此配方。Git的基本过滤机制要求每个过滤器仅读取stdin和写入stdout。默认情况下,即使它以失败状态退出,Git也会假定过滤器正常工作。)
选择在哪里运行过滤器;在这里,我仅将其设置为“干净”过滤器。
在~/.gitconfig
或.git/config
中,添加过滤器的定义:
[filter "my-xyz-language-formatter"]
clean = ~/Downloads/android-studio/bin/format.sh
smudge = cat
cat
运行的过滤器会将其未更改的输入写入其stdout;在任何类似Unix的系统上都是如此)。
.gitattributes
文件。它将应用于您在其中创建目录的目录以及所有子目录,除非在这些子目录中被覆盖,因此将其放置在最高明智的位置(通常是存储库的根目录),但有时会在
source/
或
src/
或任何下方目录。通过格式化程序将行添加到与某些模式匹配的直接文件中。我们在这里假设所有名为
*.xyz
的文件都应进行格式化:
*.xyz filter=my-xyz-language-formatter
*.xyz
文件的所有提取和插入。
The gitattributes documentation讨论了在退房和入住时应用的这些内容,但这并不是完全正确的。取而代之的是,每当Git从工作树复制到索引时(本质上是
git add
-早于
git commit
,除非您使用
git commit -a
或类似的标志),都会应用一个干净的过滤器。每当Git从索引复制到工作树时(基本上是
git checkout
,但还有一些其他情况,例如
git reset --hard
),都会应用一个模糊过滤器。
git merge
通常不使用过滤器(它适用于索引中已经存在的副本,这在过滤步骤之外)。但是,将
-X renormalize
添加到标准 merge 中将使
git merge
进行如下所述的“虚拟 checkin 和 checkout ”,因此它将应用过滤器。对于 merge 中涉及的所有三个提交,都会发生这种情况(并且在两个方向(干净和弄脏),因此,比一次提交要慢大约6倍)。
git diff
。如果这两个
git diff
中的一个或两个都看到了很多格式更改,则认为这些重要且值得应用于基础。它不具有输入代码的语义知识。
--ours
以及R表示右或远程或其他或
--theirs
的代码)格式化程序:
reformat < B > B.formatted
reformat < L > L.formatted
reformat < R > R.formatted
.gitattributes
中进行设置,方法是通过路径名定义特定文件的过滤器,并在
.git/config
或主(用户或系统范围内)
.gitconfig
中定义过滤器驱动程序。
git merge -X renormalize
。 Git将照常提取B,L和R版本,然后通过“虚拟 check out 和检入”步骤运行它们,进行三个临时提交,1 B格式化等等。然后,它使用三个临时提交(而不是原始三个提交)进行 merge 。
gofmt
或
clang-format
。如果有一个可以满足您的需求,那么将所有这些整合在一起,并从团队中的其他成员那里买进就可以了,这种重新格式化是个好主意。
关于git - 如何在多分支项目中格式化代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47023081/
我正在使用 NetBeans 开发 Java 中的 WebService,并使用 gradle 作为依赖管理。 我找到了this article关于使用 gradle 开发 Web 项目。它使用 Gr
我正在将旧项目从 ant 迁移到 gradle(以使用其依赖项管理和构建功能),并且在生成 时遇到问题>eclipse 项目。今天的大问题是因为该项目有一些子项目被拆分成 war 和 jar 包部署到
我已经为这个错误苦苦挣扎了很长时间。如果有帮助的话,我会提供一些问题的快照。请指导我该怎么办????在我看来,它看起来一团糟。 *** glibc detected *** /home/shivam/
我在 Ubuntu 12.10 上运行 NetBeans 7.3。我正在学习 Java Web 开发类(class),因此我有一个名为 jsage8 的项目,其中包含我为该类(class)所做的工作。
我想知道 Codeplex、GitHub 等中是否有任何突出的项目是 C# 和 ASP.NET,甚至只是 C# API 与功能测试 (NUnit) 和模拟(RhinoMocks、NMock 等)。 重
我创建了一个 Maven 项目,包装类型为“jar”,名为“Y”我已经完成了“Maven 安装”,并且可以在我的本地存储库中找到它.. 然后,我创建了另一个项目,包装类型为“war”,称为“X”。在这
我一直在关注the instructions用于将 facebook SDK 集成到我的应用程序中。除了“helloFacebookSample”之外,我已经成功地编译并运行了所有给定的示例应用程序。
我想知道,为什么我们(Java 社区)需要 Apache Harmony 项目,而已经有了 OpenJDK 项目。两者不是都是在开源许可下发布的吗? 最佳答案 事实恰恰相反。 Harmony 的成立是
我正在尝试使用 Jsoup HTML Parser 从网站获取缩略图 URL我需要提取所有以 60x60.jpg(或 png)结尾的 URL(所有缩略图 URL 都以此 URL 结尾) 问题是我让它在
我无法构建 gradle 项目,即使我编辑 gradle 属性,我也会收到以下错误: Error:(22, 1) A problem occurred evaluating root project
我有这个代码: var NToDel:NSArray = [] var addInNToDelArray = "Test1 \ Test2" 如何在 NToDel:NSArray 中添加 addInN
如何在单击显示更多(按钮)后将主题列表限制为 5 个(项目)。 还有 3(项目),依此类推到列表末尾,然后它会显示显示更少(按钮)。 例如:在 Udemy 过滤器选项中,当您点击查看更多按钮时,它仅显
如何将现有的 Flutter 项目导入为 gradle 项目? “导入项目”向导要求 Gradle 主路径。 我有 gradle,安装在我的系统中。但是这里需要设置什么(哪条路径)。 这是我正在尝试的
我有一个关于 Bitbucket 的项目。只有源被提交。为了将项目检索到新机器上,我在 IntelliJ 中使用了 Version Control > Checkout from Ve
所以,我想更改我公司的一个项目,以使用一些与 IDE 无关的设置。我在使用 Tomcat 设置 Java 应用程序方面有非常少的经验(我几乎不记得它是如何工作的)。 因此,为了帮助制作独立于 IDE
我有 2 个独立的项目,一个在 Cocos2dx v3.6 中,一个在 Swift 中。我想从 Swift 项目开始游戏。我该怎么做? 我已经将整个 cocos2dx 项目复制到我的 Swift 项目
Cordova 绝对是新手。这些是我完成的步骤: checkout 现有项目 运行cordova build ios 以上生成此构建错误: (node:10242) UnhandledPromiseR
我正在使用 JQuery 隐藏/显示 li。我的要求是,当我点击任何 li 时,它应该显示但隐藏所有其他 li 项目。当我将鼠标悬停在文本上时 'show all list item but don
我想将我所有的java 项目(223 个项目)迁移到gradle 项目。我正在使用由 SpringSource STS 团队开发的 Gradle Eclipse 插件。 目前,我所有的 java 项目
我下载this Eclipse Luna ,对于 Java EE 开发人员,如描述中所见,它支持 Web 应用程序。我找不到 file -> new -> other -> web projects
我是一名优秀的程序员,十分优秀!