每次我检查git-hub服务器的源代码时,我都需要更新源代码修订关键字(@ version,@ date等)。
你可能知道:
Git中的主要问题是你无法修改文件 在你提交之后有关提交的信息,因为Git 首先校验文件。
基本上我想要实现的是我的源代码应如下所示:
* Git revision information:
*
* @version $Revision: 1e7f611039399b32e9000ec454609a0641dde368 $
* @author $Author: Eugen Mihailescu <eugenmihailescux@gmail.com> $
* @date $Date: Thu May 3 01:17:45 2012 +0200 $
*
* $Id: | Thu May 3 01:17:45 2012 +0200 | Eugen Mihailescu $
Here和here您可以在Git中找到有关如何实现此目标的完整说明。
事实证明,您可以编写自己的过滤器 提交/结帐时文件中的替换。这些都是“干净”的 “涂抹”过滤器。在.gitattributes文件中,您可以为其设置过滤器 特定路径,然后设置将仅处理文件的脚本 在他们被检查之前(“涂抹”,见图7-2)和之前 他们承诺了。
所以我知道如何使用git命令。我测试过,它只是有效! 我真正的问题是我想通过使用Eclipse IDE来实现同样的功能。 在Eclipse中我有Eclipse Git,这是一个基于JGit的Eclipse Team提供程序,它是Git版本控制系统的纯Java实现。
在Eclipse EGit中没有这样的命令“git checkout”,但是可以通过硬重置来完成(右键单击你的项目然后选择Team - &gt; Reset - &gt; Hard)。不幸的是,这不会运行您的清洁/涂抹过滤器,事实上,您将从git hub获得源的纯文本,而不会进行关键字扩展。
我希望我已经详细描述了整个故事,因为现在我会问:
答案 0 :(得分:1)
此commit (August 2010)发表了评论
WorkingTreeIterator
现在可以选择对文本文件执行CRLF到LF转换 我们提供了一个基本框架,以支持基于gitattributes
启用(或禁用)此功能,并支持更通用的涂抹/清洁过滤系统。
由于JGit中尚未提供gitattribute
支持,因此未实现,但mightNeedCleaning()
,isBinary()
和filterClean()
方法将提供合理的位置以便将来插入。
我认为latest JGit releases完全支持gitattribute
,而latest revision of WorkingTreeIterator
仍有空filterClean()
功能。
因此单独使用JGit可能不足以触发“过滤内容”驱动程序。