将单个文件添加到Subversion仓库,但不包括路径上的其他文件

15
上下文是,我有一个现成的CMS,我想要对其进行定制。因此,我想将我修改的文件保存在版本控制下,但我不认为需要将整个文件树都放入版本控制。
我的问题是,我需要添加一个文件以便将其保存在版本控制下,该文件位于几个子目录下,但我不想除了该文件和其父文件夹之外添加其他任何东西到仓库中。
举个例子,假设我在项目中有以下文件: project/folder1/folder2/file.txt
我想将file.txt添加到仓库中,而folder1已经在版本控制下了,但folder2不在。folder1和folder2中存在我不想全部放入版本控制的现有文件。
使用"svn import folder1/folder2/file.txt"似乎行不通,因为这样我需要检出该文件,并且即使我首先删除本地版本,SVN也会抱怨其父文件夹存在。我推断这意味着如果我使用--force选项,这将只覆盖这些文件夹的内容。
"svn add folder1/folder2/file.txt"的问题是它要求每个父文件夹已经在仓库中(从无法找到folder2/.svn/entries文件可以看出),但只有folder1在仓库中。那么我想我可以先做"svn add folder1/folder2"。问题是,这会将folder2的所有内容都放入仓库中,而我不想这样做。似乎解决方案是使用"svn add --depth=empty folder1/folder2",它只添加文件夹而没有内容,但是--depth选项是Subversion 1.5的新功能,而我使用的是1.4.2版本,最好在这个时间点上避免升级。

我在想,在旧版本的Subversion中是否有绕过--depth选项不足的方法?或者是否有另一种解决这个问题的方法?我也在想,也许我一开始设置它的方式不是很有帮助。

3个回答

39

你应该使用选项 "--non-recursive" 添加文件夹:

svn add --non-recursive folder1/folder2

我看到了那个选项,但由于某种原因,我认为它意味着添加每个子项,但不要进一步下降。但它确实完全符合我的要求,谢谢 :) - nedned

29

如果您的客户端版本为1.5或更高版本,您可以直接使用

svn add --parents folder1/folder2/file.txt

将文件及其父目录添加。


1
这个答案值得更多的关注。现在,这是一个比其他答案快得多的解决方案。 - JMTyler

15

您还可以使用快捷版本"-N",它是"--non-recursive"的简称,例如:

svn add -N folder1/folder2


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接