当我第一次发现Mercurial跟踪文件而不是目录时,我有点失望。 (这意味着你无法在repo中表示一个空目录。)但是,它在实践中似乎不是一个问题,并使一些事情对我来说更容易。 其他SCM系统如何?(编辑此帖子以添加它们。)通过不跟踪目录找到了哪些优点或缺点?(请在答案中单独分别提供。)
执行跟踪目录:
不要跟踪目录:
答案 0 :(得分:2)
这来自Mercurial book:
空目录很少有用, 并且有一些不引人注目的变通方法 你可以用来实现一个 适当的效果。的开发者 Mercurial因此感觉到了 需要的复杂性 管理空目录不值得 这个功能有限的好处 带来
我认为它几乎说明了一切。如果您设计VCS,则需要做出一些决定。在Mercurial的案例中,关于文件处理的决定(本身可能被认为是好的)导致了这个小警告。
它绝对可以被视为一个缺陷,但不是一个小缺陷。其他VCS还有其他缺陷来自其他决策(例如,git中不断需要的清理操作,不会让git值得更少)。
答案 1 :(得分:1)
git不执行空目录就不足为奇了。我确实感到惊讶的是bzr 确实跟踪它们。
从CVS开始,我们一直在使用的一个简单的解决方法是在目录中创建一个占位符文件并跟踪它。或者,您可以在构建过程中创建空目录,无论如何这几乎总是正确的。
答案 2 :(得分:1)
我也一直面临着空目录的问题。使用占位符文件的问题是你需要创建它们,并删除它们,如果不再需要它们(因为后来有添加的子目录或文件。使用大源树管理这些占位符文件可能很麻烦和错误易发生。
答案 3 :(得分:0)
添加:DO跟踪目录:Plastic SCM,Accurev