为什么svn对文件和目录的处理方式如此不同?

时间:2011-04-10 11:40:47

标签: svn software-design

您可以对工作副本进行两种更改:文件更改和树更改。 您不需要告诉Subversion您打算更改文件; Subversion会自动检测哪些文件已被更改,此外。对于树更改,您可以要求Subversion“标记”文件和目录以进行计划删除,添加,复制或移动。

为什么svn对待目录的方式与处理文件的方式不同?

经过测试,我发现以与文件更改相同的方式处理目录更改非常实用,因为它的上一个修改时间戳也是可跟踪的:

[ ~]# mkdir svntest
[ ~]# ll |grep svn
drwxr-xr-x  2 root root      4096 2011-04-10 07:41 svntest
[ ~]# touch svntest/demo.txt
[ ~]# ll |grep svn
drwxr-xr-x  2 root root      4096 2011-04-10 07:42 svntest

2 个答案:

答案 0 :(得分:0)

文件是全有或全无的版本,而目录按项目进行版本控制。如果对它们进行相同处理,则会有两种不同的选择:

  • 将文件视为与目录相同:这意味着文件中的每一行都可以单独使用,您可以选择要版本化的行。这没有多大意义。

  • 将目录视为文件:这意味着您添加到目录中的每个文件都会自动添加到您的树中(甚至是目标文件,二进制文件和其他临时文件),因此无法获得与目录树不同的目录树树干。这似乎也没有太大用处。此外,在不立即提交的情况下处理重命名的唯一方法是“安排”它。

答案 1 :(得分:0)

我没有自动标记所有新文件和目录以便添加的最佳理由是,在包含工作副本的目录中编译代码是很常见的。如果svn以这种方式工作,那么存储库最终会填满一堆垃圾(编译器的输出)。

相关问题