phillipsdata/git-migrate

SVN 到 Git 迁移器

1.2.0 2015-10-22 20:25 UTC

This package is auto-updated.

Last update: 2024-09-23 09:54:35 UTC


README

Build Status Coverage Status

一个从 SVN 迁移到 Git 的实用工具。

使用 Atlassian 的 svn-migration-scripts 将各种 SVN 仓库迁移到 Git。此实用工具在您有大量外部资源位于单个 SVN URL 之下时特别有用。

工作原理

  1. GitMigrate 将在您的机器上执行 git 以将 SVN 仓库克隆到本地路径。 注意:您的仓库 必须 是标准的 SVN 格式(/trunk, /branches, /tags)。
  2. 然后 GitMigrate 将执行 svn-migration-scripts 将标签放置在正确的位置。

使用方法

0. 在您的机器上安装 git

如果您尚未安装 git,请安装它。然后确保它可以通过 git 执行。

您还需要确保拥有一个相对现代版本的 Java。

1. 通过 composer 安装

composer require phillipsdata/git-migrate

2. 创建您的配置文件

配置是一个 JSON 文件,它表示您希望操作的仓库,以及任何其他作为 git-migrate 实用工具参数可用的选项。

它看起来像这样

{
  "repositories": [
    {
      "path": "my-external-dir/another-dir/repo1",
      "origin": "https://domain.com/repo1.git"
    },
    {
      "path": "my-external-dir/another-dir/repo2"
    }
  ],
  "authors": "/path/to/authors.txt",
  "dir": "/path/to/",
  "javalib": "/path/to/svn-migration-scripts.jar",
  "url": "svn://svn.yourdomain.com/"
}

每个仓库的 路径 是指定 url 选项的 URI。

注意我们的 repo2 没有源。对于所有仓库, 是可选的。设置源允许我们使用 push 标志将仓库推送到远程仓库。

选项 部分查看对其他选项的解释。

项目文件(已弃用)

项目配置是一个文件,它返回单个仓库的目录结构。如果您只是迁移单个仓库,它可能看起来像这样

<?php
return [
    'my-repo-name'
];

另一方面,如果您正在将多个外部资源迁移到它们自己的单独 Git 仓库(这可能是您使用此工具的原因),您的配置结构可能更像这样

<?php
return [
    'my-external-dir' => [
        'another-dir' => [
            'repo1',
            'repo2'
        ]
    ],
    'repo3',
    'my-other-external-dir' => [
        'repo4'
    ]
];

此方法已弃用,改用上述 JSON 配置文件指定仓库。

3. 运行迁移

这将创建一个 Git 仓库,从您的 SVN 仓库克隆主干、分支和标签。

请注意,如果您正在迁移存在于某些子目录中的外部资源,您需要相应地调整 url。我建议将主仓库的迁移与外部资源的迁移分开运行。

vendor/bin/git-migrate --config=/path/to/config.json

4. 保持同步

在您从 SVN 迁移到 Git 的过程中,您只能向 SVN 仓库提交更改,因此您需要某种方式来保持仓库的同步。您可以通过添加 --sync 标志来实现这一点。

vendor/bin/git-migrate --config=/path/to/config.json --sync

5. 推送到远程源

迁移到 Git 的最后一步是共享您的仓库。您可以通过使用 --push 标志将其推送到远程仓库(确保您已为您希望推送的每个仓库在配置中定义了源)来完成此操作。

vendor/bin/git-migrate --config=/path/to/config.json --push

选项

  • config 用于设置可配置选项的 JSON 文件。
  • items 您的 items 配置的路径(已弃用,使用 config)。
  • dir Git 仓库应创建的完整系统路径。
  • authors 作者文件的完整系统路径。请参阅Atlassian 迁移指南
  • url 您的 Subversion 仓库的 URL。
  • javalib 指向Atlassian的svn-migration-scripts.jar文件的完整系统路径。
  • clone 如果您想将Subversion仓库克隆到Git仓库中(默认)。
  • sync 如果您需要使用Subversion仓库中的提交更新现有的Git仓库。
  • push 如果您想将现有的Git仓库推送到它们的远程来源。