git扩展名来显式跟踪文件重命名?

时间:2013-02-12 06:47:15

标签: git rename

首先是问题

是否有任何git工具或补丁使其专门存储有关文件重命名的元数据(就像git-svn与“git-svn-id”一样)? 如果没有这个,是否有另一个DVCS给我快速的本地分支(如git)和正确的文件重命名跟踪(如bazaar)?

现在有一些背景知道为什么我需要这个:

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

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

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

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

1 个答案:

答案 0 :(得分:3)

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

对于它的价值而言,git在这里并非完全疯狂,并且various sensible reasons表示它的作用 - 而不是它的安慰。 :)