首页 > 解决方案 > 在非空远程文件夹中创建存储库

问题描述

自从我上次使用 svn 已经 14 年了,我似乎忘记了一切......

我有一个现有的网络项目,由 V-Server 上的目录树中的一堆 php、html、js 和其他文件组成。现在我想将这些文件夹置于版本控制之下,并使用 svn 在我的本地机器上创建一个副本。所以我根据这些说明安装了 subversion:https ://www.linuxcloudvps.com/blog/how-to-install-svn-server-on-debian-9/ 使用已经存在的 apache2。

但现在我有点遇到障碍了。如果我尝试svnadmin create现有文件夹,它会告诉我它不是空的并且什么都不做。我在这里和其他地方找到的所有问题和答案都是 a)专注于本地机器上已经存在的文件夹 b)假设比我现在拥有更多的先验知识,也就是我不理解它们。

是否有针对任何地方的假人的分步指南,说明如何执行此操作?或者任何人都可以用外行的方式告诉我如何做到这一点?我不敢相信这个案子永远不会出现,或者它真的非常复杂。

标签: apachesvnversion-controldebiantortoisesvn

解决方案


冒着无法理解您的确切需求的风险,我认为您可以按照以下方式进行。我将使用以下术语:

  • 代码:它是 V-Server 上的未版本控制目录,您当前拥有一堆 php、html、js 和其他文件

  • Repository:这是您需要创建的第一个“特殊”目录,用于存储您的 Subversion 历史记录并可能与他人共享。必须有一个,而且只能有一个。

  • 工作副本:这是您需要创建的第二个“特殊”目录,以便在您的 php、html、js... 文件被版本化后使用它们,并且它将链接到您的存储库的给定路径和修订版。在给定的时间,可能有零个、一个或多个。

您的代码是否可以成为工作副本,这取决于您,但它永远不会成为存储库:

$ svnadmin create /path/to/code
svnadmin: E200011: Repository creation failed
svnadmin: E200011: Could not create top-level directory
svnadmin: E200011: '/path/to/code' exists and is non-empty

您的存储库需要一个空文件夹,但它可以位于您喜欢的任何位置,只要您可以从您将在日常工作中使用的机器访问它。访问意味着它位于您的 PC 中(因此您使用该file:协议),或者可以通过您已安装和配置的服务器访问它(svn:http:https:

$ svnadmin create /path/to/repo
$ 

您可以在需要使用 IDE 的任何地方创建工作副本。它可以是空目录(通常情况下)或非空目录。checkout 命令从 repo 中检索您的文件并将它们放入工作副本中,因此,在稍后阶段,您可以运行 commit 命令将新的和更改的文件提交到存储库。正如您所知道的,在随机目录中创建工作副本并不是一个好主意,因为传入的文件会与现有文件混合。然而,有一种特殊情况是有意义的:当存储库位置是新的并且仍然是空的时。在这种情况下,您可以在两种方法之间进行选择:

  • 如果您希望代码成为工作副本,您可以直接签入,然后进行初始提交以上传所有文件:

    $ svn checkout file://path/to/repo /path/to/code
    Checked out revision 0.
    $ svn add /path/to/code --force 
    A         code/index.php
    $ svn commit /path/to/code -m "Import existing codebase"
    $ Adding         /path/to/code/index.php
    $ Transmitting file data .done
    $ Committing transaction...
    $ Committed revision 1.
    
  • 如果您不关心存储在存储库中的代码,或者您希望将工作副本放在其他位置,则可以从代码中导入文件并在新目录中创建工作副本:

    $ svn import /path/to/code file://path/to/repo -m "Import existing codebase"
    Adding         code/index.php
    Committing transaction...
    Committed revision 1.
    $ svn checkout file://path/to/repo fresh
    A    fresh/index.php
    Checked out revision 1.
    

推荐阅读