2011-04-10 62 views
0

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

为什么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 
+0

目录中的最后修改时间与文件中的最后修改时间无关:版本控制系统跟踪*内容*更改。你面临什么确切的问题? – 2011-04-10 11:52:30

回答

0

文件的版本全有或全无,而目录按项目进行版本控制。如果他们被同等对待,会有两种不同的选择:

  • 款待文件同目录:这意味着,在一个文件中的每一行可以单独和你可以选择你想要哪个版本线。这没有多大意义。

  • 款待目录,文件:这意味着每次添加到一个目录下的文件会自动添加到您的树(甚至对象文件,二进制文件和其他临时工),使得它不可能有从不同的目录树树干。这也看起来不太有用。此外,处理重命名而不立即提交的唯一方法是“安排”它。

+0

这是什么意思? – 2011-04-10 12:25:05

+0

我使用“schedule”与原始问题(“** scheduled **移除,添加,复制或移动”)中使用的意义相同。 – Gabe 2011-04-10 12:33:24

+0

SVN处理目录的方式给用户带来了很多麻烦,因为我们可以直接用'vi'编辑文件,这让用户认为他可以按照自己的意愿“rm -rf directory”,但事实并非如此! – 2011-04-10 12:39:14

0

我能找到不自动标记所有的新文件和目录的另外最好的理由是,它是常见的编译代码包含在你的工作副本的目录。如果svn以这种方式工作,仓库最终会填满一堆垃圾(编译器的输出)。

相关问题