加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

如何设置subgit镜像一个看起来像Windows资源管理器层次结构的svn

发布时间:2020-12-14 03:59:16 所属栏目:Windows 来源:网络整理
导读:作为 Windows用户,我们创建了一个带有文件夹层次结构的svn repo.底部节点包含svn标准布局: ProjectA/ ApplicationOne/ ModuleX/ trunk/ branches/ tags/ ApplicationTwo/ ModuleY/ trunk/ branches/ tags/ ……等等无限期. repo现在包含大约100个带有trunk
作为 Windows用户,我们创建了一个带有文件夹层次结构的svn repo.底部节点包含svn标准布局:

ProjectA/
    ApplicationOne/
        ModuleX/
            trunk/
            branches/
            tags/
    ApplicationTwo/
        ModuleY/
            trunk/
            branches/
            tags/

……等等无限期. repo现在包含大约100个带有trunk / branches / tags结构的真实svn项目,但它们几乎都不在顶层.

我如何配置subgit来处理这个?

解决方法

SubGit可以在两种不同的模式下工作:本地镜像模式和远程镜像模式.您可以在下面找到这些模式的一般概述以及针对您的特定情况的一些建议.

>本地镜像模式

在这种模式下,Subversion和Git存储库都驻留在同一主机上,因此SubGit可以对SVN和Git端进行本地访问.

下面我提供了基本说明.请在SubGit ‘Local Mode’ Book中找到详细的文档和常见陷阱.

>配置

subgit configure <SVN_REPO>
SubGit version <VERSION> build #<BUILD_NUMBER>

Detecting paths eligible for translation... done.
Subversion to Git mapping has been configured:
  /ProjectA/ApplicationOne/ModuleX : <SVN_REPO>/git/ProjectA/ApplicationOne/ModuleX.git
  /ProjectA/ApplicationTwo/ModuleY : <SVN_REPO>/git/ProjectA/ApplicationTwo/ModuleY.git
  ...

CONFIGURATION SUCCESSFUL
...

此命令尝试自动检测存储库布局并在< SVN_REPO> /conf/subgit.conf中生成配置文件.如果像您这样的大型Subversion存储库可能需要一段时间.

请确保自动生成的配置文件如下所示,必要时进行调整:

...
[git "ProjectA/ApplicationOne/ModuleX"]
  translationRoot = /ProjectA/ApplicationOne/ModuleX
  repository = git//ProjectA/ApplicationOne/ModuleX.git
  pathEncoding = UTF-8
  trunk = trunk:refs/heads/master
  branches = branches/*:refs/heads/*
  shelves = shelves/*:refs/shelves/*
  tags = tags/*:refs/tags/*
...

>作者映射

在此阶段,您必须创建/conf/authors.txt文件,将现有SVN用户名映射到Git作者.有关详细信息,请参阅documentation.
>安装

最后,您必须将Subversion存储库导入Git并通过运行subgit install命令启用同步:

subgit install repo
SubGit version <VERSION> build #<BUILD_NUMBER>

Subversion to Git mapping has been found:
  /ProjectA/ApplicationOne/ModuleX : <SVN_REPO>/git/ProjectA/ApplicationOne/ModuleX.git
  /ProjectA/ApplicationTwo/ModuleY : <SVN_REPO>/git/ProjectA/ApplicationTwo/ModuleY.git
  ...

Processing '/ProjectA/ApplicationOne/ModuleX'
  Translating Subversion revisions to Git commits...
Processing '/ProjectA/ApplicationTwo/ModuleY'
  Translating Subversion revisions to Git commits...
  ...

  Subversion revisions translated: <REVISIONS_NUMBER>.
  Total time: <TIME_SPENT> seconds.

INSTALLATION SUCCESSFUL

> Git服务器

当安装结束并且启用Subversion和Git存储库之间的同步时,您可以设置一些Git服务器(或重用现有的Apache HTTP服务器).请参阅documentation,并在我们的博客中查看关于此主题的几篇帖子:

> VisualSVN Server and SubGit
> Gitolite and SubGit

>远程镜像模式

使用此模式时,必须仅将SubGit安装到Git存储库中,并使此存储库与托管在其他计算机上的远程Subversion服务器保持同步.

您可以在下面找到一些基本说明.有关详细信息,请参阅SubGit ‘Remote Mode’ Book.

>配置

在远程镜像模式下,SubGit不会尝试自动检测存储库布局,因此您必须运行subgit configure –svn-url< SVN_URL> Subversion存储库中每个模块的命令:

subgit configure --svn-url <SVN_ROOT_URL>/ProjectA/ApplicationOne/ModuleX <GIT_ROOT_DIR>/ProjectA/ApplicationOne/ModuleX.git
SubGit version <VERSION> build #<BUILD_NUMBER>

Configuring writable Git mirror of remote Subversion repository:
  Subversion repository URL : <SVN_ROOT_URL>/ProjectA/ApplicationOne/ModuleX
  Git repository location   : <GIT_ROOT_DIR>/ProjectA/ApplicationOne/ModuleX.git

CONFIGURATION SUCCESSFUL
...

因此,SubGit为每个Git存储库生成配置文件< GIT_REPO> / subgit / config.对于您的情况,此配置文件应如下所示:

...
[svn]
  url = <SVN_ROOT_URL>/ProjectA/ApplicationOne/ModuleX
  trunk = trunk:refs/heads/master
  branches = branches/*:refs/heads/*
  tags = tags/*:refs/tags/*
  shelves = shelves/*:refs/shelves/*
  fetchInterval = 60
  connectTimeout = 30
  readTimeout = 60
  keepGitCommitTime = false
  auth = default

[auth "default"]
  passwords = subgit/passwd
  useDefaultSubversionConfigurationDirectory = false
  subversionConfigurationDirectory = <SVN_CONFIG_DIR>
...

>作者映射

在此阶段,您必须创建/subgit/authors.txt文件,请参阅documentation.
> SVN凭证

如果您不使用file://协议,则必须提供必要的凭据,因此SubGit能够对Subversion服务器进行身份验证.有关详细信息,请阅读SubGit Book中的corresponding chapter.

我们还建议在Subversion端启用pre-revprop-change挂钩,这使得进一步的安装和维护更容易一些,见SubGit Book.
>安装

最后,您必须将Subversion存储库导入Git并通过运行subgit install命令启用同步:

subgit install git
SubGit version <VERSION> build #<BUILD_NUMBER>

Translating Subversion revisions to Git commits...

  Subversion revisions translated: <REVISIONS_NUMBER>.
  Total time: <TIME_SPENT> seconds.

INSTALLATION SUCCESSFUL

此命令还会启动后台进程,轮询SVN服务器并在其出现时获取新修订.基本上,这意味着SubGit为每个Git存储库使用专用进程.有时,避免运行此类进程并使用某些作业调度程序是有意义的.
> Git服务器

我上面提供的那些链接也与远程模式相关.

但是,如果你打算使用Atlassian Stash进行Git托管,你可以使用基于SubGit引擎的SVN Mirror Plugin,并提供一些关于UI和维护的更好体验.

我们根据我们的经验制定了以下指南:

>如果有许多独立的Subversion存储库,最好在本地镜像模式下使用SubGit,因为它不需要SVN轮询并为此维护其他进程.
>如果有一个包含许多模块的巨型Subversion存储库,最好将远程镜像模式与file://协议一起使用,并稍微调整基本设置.

在您的情况下运行100个后台进程绝对没有意义,相反,我们建议安装额外的提交后SVN挂钩,检查给定修订版修改了哪些特定模块,然后触发相应Git存储库的同步.

如果您有任何其他问题,请随时在Stack Overflow,our issue tracker或在线联系我们:support@subgit.com.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读