每次我签出git-集线器服务器的源代码时,我都需要更新我的源代码修改关键字(@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 $这里和这里您可以找到关于如何在Git中实现这一点的完整描述。
结果是,您可以编写自己的过滤器,以便在提交/签出时在文件中进行替换。这些是“干净”和“污迹”过滤器。在.gitattributes文件中,您可以为特定路径设置一个筛选器,然后设置脚本,在文件签出之前处理它们(请参见图7-2),并在提交文件之前进行处理。
所以我知道如何使用git命令。我测试过了,它只是起作用了!我真正的问题是,我希望通过使用Eclipse来实现同样的目标。在Eclipse中,我有Eclipse,它是一个基于JGit的Eclipse,它是Git版本控制系统的纯Java实现。
Eclipse EGit中没有这样的命令"git“,但是可以通过硬重置来完成(右键单击您的项目,然后选择Team -> reset -> Hard)。不幸的是,这将不会运行您的干净/污点过滤器,实际上,您将从git集线器获得源的纯副本,而不需要任何关键字扩展。
我希望我已详细描述了整个故事,因为我现在会问:
发布于 2012-05-03 07:01:27
这个承诺(2010年8月)评论
在WorkingTreeIterator期间执行CRLF到LF的自动转换
WorkingTreeIterator现在可选地为文本文件执行CRLF到LF转换。 保留了一个基本框架,以支持基于gitattributes的启用(或禁用)此功能,并支持更通用的污点/干净筛选系统。 由于在gitattribute中还没有对JGit的支持,这是没有实现的,但是mightNeedCleaning()、isBinary()和filterClean()方法将为将来将其插入提供合理的位置。
我不认为gitattribute在最新的JGit版本中是完全支持的,而且WorkingTreeIterator仍然有一个空的filterClean()函数。
因此,仅使用JGit可能不足以触发“筛选内容”驱动程序。
https://stackoverflow.com/questions/10426402
复制相似问题