phillipsdata / git-migrate
SVN 到 Git 迁移器
Requires
- php: >=5.4.0
Requires (Dev)
- phpunit/phpunit: ~4.6
- squizlabs/php_codesniffer: ~2.3
This package is auto-updated.
Last update: 2024-09-23 09:54:35 UTC
README
一个从 SVN 迁移到 Git 的实用工具。
使用 Atlassian 的 svn-migration-scripts 将各种 SVN 仓库迁移到 Git。此实用工具在您有大量外部资源位于单个 SVN URL 之下时特别有用。
工作原理
- GitMigrate 将在您的机器上执行
git
以将 SVN 仓库克隆到本地路径。 注意:您的仓库 必须 是标准的 SVN 格式(/trunk, /branches, /tags)。 - 然后 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仓库推送到它们的远程来源。