TortoiseSVN:在使用SVN Checkout对话框中选择“仅此项”选项后添加附加文件

33
我们的部门计划在Tortoise SVN中使用"SVN Checkout"选项。在该对话框中,我们选择"Only this item"选项,然后单击"Choose items"按钮并选择要检出的所有相关文件。假设用户犯了一个错误,并忘记检出一个重要文件。最简单的方法是如何返回并从主干选择该文件(或文件列表)?
编辑:
建议更改@Chad's答案:
A.) 如果您要检查的文件夹(s)或文件(s)的父文件夹在工作副本中不存在,则执行以下操作:
1.为存储库打开Repo-browser。 2.右键单击错过的文件并选择“Checkout ...”。 3.将Checkout目录修复/设置为文件应该存在的位置(将单击的文件夹中的文件夹添加到您正在检查的文件夹/文件的父文件夹中,并确保您使用反斜杠字符) 4.单击“确定”。 5.您将收到“目标文件夹不为空”的警告。请继续选择“Check out into the non-empty folder”选项。
这些文件将添加到工作副本中。
免责声明:如果您不遵循第3步,则检出文件的工作副本将位于相对于其余文件的奇怪位置。
B.) 如果您要检查的文件夹(s)或文件(s)的父文件夹在工作副本中存在,则执行以下操作:
1.为存储库打开Repo-browser。 2.导航到您要检出的文件的父文件夹(避免了必须修复“Checkout Directory”的步骤)
  • 右键单击未被选中的文件,选择Checkout...
  • 点击OK
  • 你会收到一个警告“目标文件夹不为空”。继续选择将其检出到非空文件夹选项。
  • 这些文件将被添加到工作副本中。

    编辑#2:

    @gbjbaanb建议更新:

    要将新文件夹/文件添加到工作副本中:

    1. 右键单击已检出文件夹的根文件夹>选择“TortoiseSVN”>选择“Repo-browser”
    2. 输入凭据(如果在TortoiseSVN>设置>保存数据中清除了身份验证)>单击“OK”
    3. 右键单击Repository Browser对话框中的文件资源管理器面板或文件详细信息面板中的项目>选择“Update item to Revision”>在“Update to Revision”对话框中使用所有默认值>单击“OK”
    4. 输入凭据(如果在TortoiseSVN>设置>保存数据中清除了身份验证)>单击“OK”

    注意: 针对所有要添加的新文件夹/文件重复步骤#3和#4

    免责声明: 假设您只将新文件夹或文件添加到工作副本/已检出的文件夹中。

    要从工作副本中排除文件夹/文件:

    1. 右键单击要排除的文件夹或文件
    2. 选择 Tortoise SVN > Update to Revision
    3. 在“Update to Revision”对话框的“Update Depth”部分下单击“Choose items...”按钮
    4. 输入凭据(如果在TortoiseSVN>设置>保存数据中清除了身份验证)>单击“OK”
    5. 取消选中相关文件夹或文件>单击“OK”

    这是我在一个非常大的版本库中使用的方法。我只需要检出我需要的部分。


    很想学习如何在命令行上完成这个。 - gbronner
    不确定如何通过命令行完成,但如果您想自动化处理,可以查看SharpSVN .NET库。它在其中可用。 - Entree
    2个回答

    47

    您右键单击根目录,选择版本库浏览器,在其中找到您想要下载到工作副本的相关部分,右键单击并选择“更新到修订版”。

    要删除已下载的项目,请右键单击工作副本中的该项目,选择相同的菜单(更新到修订版),并从深度框中选择“排除”。

    这是我在非常大的代码仓库中使用的方法。只有我需要的部分被签出,当我需要它们时。


    +1...这个工作流比@Chad的回答简单得多。请参见编辑#2。 - Entree
    它也更加“正确”。另一个答案会导致先前缺失的项目嵌套在原始工作副本中,因此像“合并”这样的工具会出错。 - Steve

    5
    有两种情况需要将漏掉的文件和文件夹添加到工作副本中:缺失父文件夹场景和存在父文件夹场景。
    场景1: 工作副本缺失漏掉的文件或文件夹的父文件夹
    1. 打开版本库的“Repo-browser”。 2. 右键点击丢失的文件并选择“Checkout…”。 3. 设置“Checkout directory”到文件应该去的地方。从现有的工作副本文件夹中,添加到导致该文件夹或文件缺失的文件夹的路径。请确保使用反斜杠字符。 4. 点击“OK”。 5. 你将获得一个警告:“目标文件夹不为空”。继续并选择“Checkout into the non empty folder”选项。 6. 文件将被添加到工作副本中。
    免责声明:如果你没有按照第3步执行,检出的文件的工作副本将位于与其余文件无关的奇怪位置。
    场景2:工作副本已经包含了漏掉的文件或文件夹的父文件夹
    1. 打开版本库的“Repo-browser”。 2. 导航到你打算检出文件的父文件夹(这样可以避免更改“Checkout Directory”)。 3. 右键点击丢失的文件并选择“Checkout…”。 4. 点击“OK”。 5. 你将获得一个警告:“目标文件夹不为空”。继续并选择“Checkout into the non empty folder”选项。 6. 文件将被添加到工作副本中。

    +1 .... 请看编辑。我仍在测试许多情况...因此,我建议的答案会变得更加复杂,以便我们涵盖答案中的所有情况,在那时,我将把您的答案标记为答案。这个答案对我启发很大。 - Entree
    抱歉,我改变了主意。另一个工作流程稍微简单一些,所以我将其标记为答案。感谢您的建议。 - Entree

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