Linux SVN就地导入和签出

Linux SVN就地导入和签出,linux,svn,version-control,Linux,Svn,Version Control,使用Linux命令行和,是否可以获取目录并向其添加版本控制 基本上,我希望将目录导入到新创建的存储库中,但也希望目录是一个工作副本,而不必签出它 假设您已经使用svnadmin在/svn/foo/mydirname创建了一个存储库,并且您想要版本控制/home/user/mydirname(这就是您的意思吗?) 然后执行以下操作: cd /home/user/mydirname svn co file:///svn/foo/mydirname . #This only creates the "

使用Linux命令行和,是否可以获取目录并向其添加版本控制


基本上,我希望将目录导入到新创建的存储库中,但也希望目录是一个工作副本,而不必签出它

假设您已经使用svnadmin在/svn/foo/mydirname创建了一个存储库,并且您想要版本控制/home/user/mydirname(这就是您的意思吗?)

然后执行以下操作:

cd /home/user/mydirname
svn co file:///svn/foo/mydirname . #This only creates the ".svn" folder for version control
svn add ./*                        #Tell svn you want to version control all files in this dir
svn ci                             #Check the files in

您的目录现在是版本控制的

是的,您可以将现有目录(包含内容)导入到SVN存储库中,并将当前位置用作受版本控制的工作副本。按照以下步骤进行:

假设您的(未版本化的)项目源位于/home/user/projectx中,并且您的存储库已准备就绪file:///svnrepo

  • 首先,在项目树之外的某个地方创建一个空目录,例如,
    /tmp/empty
    。在Subversion存储库中导入该空目录:

    cd /tmp/empty
    
    svn import . file:///svnrepo/projectx
    
    svn add *
    
    svn commit -m 'initial commit'
    
  • 进入已填充的项目目录。现在检查您在步骤1中创建的存储库位置:

    cd /home/user/projectx
    
    svn checkout file:///svnrepo/projectx .
    
  • 这会将.svn文件添加到填充的项目目录中,但不会执行任何其他操作,因此现有文件是安全的

  • 接下来,将包含文件的目录添加到存储库:

    cd /tmp/empty
    
    svn import . file:///svnrepo/projectx
    
    svn add *
    
    svn commit -m 'initial commit'
    

  • 完成。

    hmmm,它使用c风格的注释进行突出显示。真烦人。我想它需要一个拖尾点,对吗?“svn公司file:///svn/foo/mydirname “我希望在我
    rm-rf
    ed我的目录之前阅读此内容,以便签出.FWIW,如果您正在签入子目录(而不是repo的根目录),并且该目录不存在,您可以使用svn mkdir命令来创建您正在签入的目录-例如:svn mkdir--父母为我工作!谢谢我删除了旧的.svn文件夹,进行了签出,然后进行了添加,然后从TortoiseSVN gui进行了提交,结果成功了。为什么这个问题是社区wiki?您需要添加--force,否则svn将停止并抱怨“svn:未能添加文件‘file’:一个同名的未版本文件已经存在当执行此过程时,我得到了错误”svn:E155015:[目录]是冲突中的现有项;在添加的每个子目录上,请将冲突标记为“在此处添加新项之前已解决”。我必须先解决每个子目录,然后才能使用命令“svn resolved[directory]”执行“svn--force add*”