如何将包含文件的现有文件夹添加到SVN?


84

如何将没有版本控制的文件夹添加到特定的SVN位置?我经常开始编写代码,只有在几个包含代码文件的文件夹之后,才将其添加到SVN中。

我通常要做的是:

  1. svn co我要在其中创建新文件夹来存储代码的父目录。
  2. svn mkdir来创建我想放入代码的目录。
  3. 复制并粘贴我的代码。
  4. svn commit
  5. 删除我当前的工作代码目录。
  6. 使用svn co重新创建我的工作代码目录。

Answers:


134

假设我在目录中有代码~/local_dir/myNewApp,我想将其放在“ https://svn.host/existing_path/myNewApp ”下(同时能够忽略某些二进制文件,供应商库等)。

  1. 在存储库中创建一个空文件夹 svn mkdir https://svn.host/existing_path/myNewApp
  2. 转到项目的父目录, cd ~/local_dir
  3. 在本地文件夹中检出空目录。不用担心-您在本地拥有的文件不会被删除。svn co https://svn.host/existing_path/myNewApp。如果您的文件夹本地名称与存储库中的名称不同,则必须将其指定为附加参数。
  4. 您可以看到,svn st现在所有文件都显示为?,这意味着它们当前不受版本控制
  5. svn add对要添加到存储库的文件执行,然后将其他文件添加到svn:ignore。当您只想选择性地添加一些文件/文件夹时svn help add,您可能会找到一些有用的选项,例如--parents--depth empty
  6. 提交 svn ci

关于第5点:您可以通过这种方式在bash中添加工作目录的所有文件/目录: find . -name .svn -prune -o -print0|xargs -0 svn add
Nicolas M

1
我见过的关于如何将新内容添加到svn中的最佳方法。
Colin't Hart

您如何执行此操作:“如果您的文件夹本地名称与回购中的名称不同,则必须将其指定为附加参数”
Kristof Pal

1
@KristofPal:svn co https://svn.host/existing_path/myNewApp ~/local_dir/localNameOfFolder
qbolec '16

1
感谢@qbolec,“不要害怕”。对所有“最佳答案” +1。对于那些可能仍然感到恐惧的人,一个提示是:如果您仍然感到恐惧,可以备份您的工作。
斯蒂芬·塞缪尔

55

如果我正确理解了您的用例,建议您尝试使用svn add将新文件夹置于版本下,请参见此处。下面将在版本控制下递归地添加文件的新文件夹(如果您位于有效的工作副本中):

svn add new_folder
svn commit -m "Add New folder to the project"

如果您不在工作副本中,请使用svn checkout创建它,然后在其中复制new_folder并执行上述步骤。

要么

尝试svn import,请看这里;以下将创建一个新文件夹并将文件上传到存储库:

svn import -m "Import new folder to the project" new_folder \
        http://SVN_REPO/repos/trunk/new_folder

另请注意:

导入数据后,请注意原始树不受版本控制。要开始工作,您仍然需要svn签出树的新工作副本


但是父文件夹不受版本控制。它如何知道将其放置在svn存储库中的位置
Siecje 2013年

我不清楚您的文件夹在哪里,那么您是否不在“工作副本”中工作?
pmod

我已经有带文件夹的svn存储库。我创建了非svn文件和文件夹,并希望将它们添加到存储库中。现在,我的方法是检出要放置项目的目录。然后我将粘贴复制到结帐位置,然后在svn处添加。
Siecje 2013年

@Siecje我想我现在明白您的意思
pmod

所以我必须进行结帐,这意味着我必须删除文件并从SVN重新下载它们?因此,对于网站文件,在执行此操作时,该网站需要关闭一秒钟吗?
2013年

9

我不使用命令。您应该可以使用GUI来执行此操作:

  • 右键单击“我的文档”文件夹中的空白处,选择“ TortoiseSVN”>“回购浏览器”。
  • 输入http:// subversion ...(您要保存到的Subversion服务器/目录的URL路径)作为路径,然后选择OK。
  • 右键单击“回购”中的根目录,然后选择“添加文件夹”。给它命名您的项目并创建它。
  • 右键单击“仓库”浏览器中的项目文件夹,然后选择“签出”。Checkout目录将是您的Visual Studio\Projects\{your project}文件夹。选择确定。
  • 您将收到一个警告,该文件夹不为空。说“是”以检出/导出到该文件夹​​-它不会覆盖您的项目文件。
  • 打开您的项目文件夹。您将在与VS项目关联的文件夹上看到尚未添加到Subversion的问号。使用Ctrl +单击选择这些文件夹,然后右键单击所选项目之一,然后选择TortoiseSVN>添加
  • 在提示上选择确定
  • 您的文件应添加。在“添加完成”上选择“确定”!对话
  • 右键单击文件夹的空白区域,然后选择“刷新”。现在,您会在文件夹/文件上看到“ +”图标
  • 再次右键单击文件夹中的空白区域,然后选择SVN Commit
  • 添加有关您所提交内容的消息,然后单击“确定”。

1

如果打算将本地/工作副本添加到SVN中,我过去通常采用以下方式。

注意:我使用TortoiseSVN客户端,并且这些步骤假定您已经安装了TortoiseSVN客户端。

  1. 我在本地有一个项目(Test-4.2.2)。我想将其上传/添加到SVN存储库。
  2. 使用TortoiseSVN存储库浏览器,我创建了一个空目录“ Test-4.2.2”。
  3. 在本地,我将现有的“ Test-4.2.2”目录重命名为“ Test-4.2.2.1”(临时)
  4. 从SVN检出空的“ Test-4.2.2”到本地
  5. 将4.2.2.1下的所有子目录复制到此结帐目录4.2.2
  6. 现在,右键单击“ Test-4.2.2”并提交。
  7. 删除临时文件夹“ Test-4.2.2.1”

1

在Windows 7中,我这样做:

  1. 您是否已安装SVN和Tortoise SVN?如果没有,请谷歌搜索并立即执行。
  2. 转到您的SVN文件夹,其中可能有其他存储库(存储库的缩写)(或者,如果您是从头开始创建的,请选择位置C驱动器,D驱动器等或网络路径)。
  3. 创建一个新文件夹来存储您的新存储库。命名为与项目标题相同的名称
  4. 右键单击该文件夹,然后在此处选择Tortoise SVN->创建存储库
  5. 同意创建文件夹结构
  6. 单击确定。您应该在新文件夹/存储库旁边看到一个像“波浪”一样的新图标
  7. 右键单击新存储库,然后选择SVN存储库浏览器
  8. 右键单击“ trunk”
  9. 选择添加文件夹...,然后指向开发中的项目的文件夹结构。
  10. 单击“确定”,SVN将添加您的文件夹结构。请耐心等待!看起来SVN已崩溃/冻结。不用担心 它正在做它的工作。

做完了!


0

3个步骤:

  • 打开“回购浏览器”(使用yr父文件夹的链接)。
  • 右键单击选择“添加文件夹”。
  • 浏览到您的文件夹。

在此处输入图片说明


这样,您无法添加不存在的文件夹。“添加文件夹”将为您提供一个资源管理器窗口,以便您可以指向现有文件夹,然后提供一个提交窗口,以便可以将其添加到Subversion。它不是用于在本地创建新文件夹,而是仍然需要手动完成并在其中填充,然后才可以将其内容提交给Subversion。这只是故事的一半。
vapcguy

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.