2

首先是问题

git 是否有任何工具或补丁可以使其专门存储有关文件重命名的元数据(就像 git-svn 对“git-svn-id”所做的那样)?如果做不到这一点,是否有另一个 DVCS 可以为我提供快速的本地分支(如 git)和正确的文件重命名跟踪(如集市)?

现在有一些关于我为什么需要这个的背景:

我开始使用 git 几个月了,我真的很喜欢它。除了它不跟踪重命名的事实。

在我看来,不跟踪重命名的决定是基于错误的假设,即重要的是内容,而不是名称。我不同意。让我给你一个现实世界的例子。

我有一个类RefinementPresentation用作网页视图模板中的模型。我将类移动到一个单独的包(模型),然后,因为该类不仅仅是一个模型并且包含大量逻辑,我通过将逻辑移动到另一个类来重构它。正如你可以想象的那样,现在这个类与原来的类几乎没有相似之处。但从概念上讲,它是同一件事——它仍然是视图的模型。这就是我的观点。该文件是同一个文件(重命名/移动)还是不同的文件是我脑海中的一个概念,没有工具可以或应该尝试为我做这件事。如此不同,再多的启发式或猜测都不会让 git 认识到这实际上是一个移动的文件。这意味着 git log 永远不会向我显示过去的历史。当然,历史仍然存在——它并没有丢失——只是更难找到了。因此我的问题是:有没有办法避免这种不便?

编辑:在单独的提交中移动和重构是一个很好的解决方法,请参阅下面的评论(感谢 Eevee!)。

4

1 回答 1

3

最少的努力,最大的回报:在单独的提交中移动和重构文件。

就其价值而言,git 在这里并不完全疯狂,它的作用有各种合理的理由——并不是说它有太多的安慰。:)

于 2013-02-12T08:06:23.100 回答