代码之家  ›  专栏  ›  技术社区  ›  nedned

将单个文件添加到Subversion存储库,而不是沿路径添加其他文件

  •  15
  • nedned  · 技术社区  · 16 年前

    上下文是我有一个现成的CMS,我想对其进行自定义;所以我想将修改的文件保持在版本控制之下,但我不认为需要将整个文件树置于版本控制之下。

    我的问题是,我需要添加一个文件来保持在版本控制下,该文件位于下面的几个子目录中,但我不想从该文件及其父文件夹向存储库asides添加任何其他内容。

    举例来说,假设我的项目中有以下文件:

    项目/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选项是Subversion1.5中的一个新特性,而我使用的是1.4.2,此时最好避免升级。

    所以我想知道在旧版本的颠覆中是否有一种方法可以解决缺乏深度选项的问题?或者有其他解决这个问题的方法吗“我也在想,我最初设置它的方法是否没有那么有帮助。

    3 回复  |  直到 12 年前
        1
  •  37
  •   tangens    16 年前

    您应该使用选项“--non recursive”添加文件夹:

    svn add --non-recursive folder1/folder2
    
        2
  •  25
  •   Hound    12 年前

    如果您的客户端版本是1.5或更高,您可以简单地使用

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

    添加文件及其父目录。

        3
  •  16
  •   AndyGaskell    13 年前

    您还可以使用快速版本“-n”,它是“-non-recursive”的缩写形式,如

    svn add -N folder1/folder2