刚刚在一台全新的高性能服务器上安装了全新的6.8 Gitlab.
在考虑忘记我的存储库历史记录(评论,问题等等)之前,有人知道将存储库数据从Gitlab服务器导出到另一个Gitlab服务器的方法吗?
我只是没有在导出/迁移整个项目数据(不仅仅是git存储库及其wiki)的文档中找到任何内容.
Gre*_*cki 32
对于GitLab版本> = 8.9(2016年6月发布),您可以使用内置导出和导入项目功能.
请注意,对于GitLab的现有安装,必须在应用程序设置中启用项目导入选项(URL:/admin/application_settings)在"导入源"下.您必须是管理员才能启用和使用导入功能.
这是功能完整的文档:https://gitlab.com/help/user/project/settings/import_export.md
我最近实际上已经这样做了,我们正在升级我们的gitlab实例,需要保存并导入存储库到新安装.
首先,创建已签出存储库的捆绑包.例如,假设你检查了一个存储库,我们将调用myrepository
要检查存储库,请使用git clone(假设您的存储库位于root帐户下,ipaddress是192.168.1.1)
git clone http://192.168.1.1/root/myrepository.git (或匹配您的环境)
现在这一步有点重要; 您需要更改为具有已签出存储库的.git文件夹的工作目录.
cd myrepository
接下来,您将创建一个包文件:
git bundle create myrepository.bundle --all
将bundle文件导入gitlab的新实例.
在gitlab gui界面上创建一个新的'myrepository'
克隆空仓库; 让我们说这个新的gitlab有ipaddress 192.168.1.2:
git clone http:\\192.168.1.2\root\myrepository.git (或匹配您的环境)
您将收到有关克隆空存储库的警告.这个是正常的.
转到已签出存储库的工作目录并执行git pull:
cd myrepository
git pull file/path/to/myrepository.bundle
这会将存储库拉入您的克隆.接下来你可以做一个git add,git commit和git push
假设您正确设置了gitlab服务器设置,这应该可以正常工作; 您可能遇到诸如需要在nginx.conf文件中添加client_max_body_size参数以及用于推送大文件的'git config --global http.postBuffer'等问题.
另一种方法是制作每个提交的补丁文件,然后进行部署:
这包括执行'git format-patch -C 0badil..68elid -o patch_directory_path'并引用所有提交的范围并将它们推送到输出目录; 这应该为每个提交一个补丁文件.接下来将涉及git克隆新的空存储库,更改为克隆的工作目录,并使用'git am patch_directory_path'将补丁应用于新存储库
对于repos本身,你可以使用git bundle:生成一个文件,它很容易复制.
(正如我在" 备份本地Git存储库 "中所述)
但另一种方法是git clone --mirror从本地工作站上的第一台服务器git push --mirror到新服务器的回购.
这就是GitHub在其帮助页面" 复制存储库 "中的详细信息.
在这两种情况下,您首先需要在新的GitLab服务器上声明这些存储库,以便初始化它们并准备好接收提交.
但其余的......不容易.有待处理的功能请求 :(
更新2016年8月,2年后:GitLab 8.9已实现该功能)
(对于8.9以上的GitLab版本,请参阅并提升Greg Dubicki的答案)
我同意问题是首先出口的主要问题.
它们存储在数据库中.将它们存储在git中不是一种选择.也许将它们导出为格式化文件(SQL,YAML或其他).
使用
mysqldump创建旧数据库的转储,然后创建新的服务器上的一个新的数据库和导入此.
- 老:
mysqldump gitlab | gzip > gitlab.sql.gz
Run Code Online (Sandbox Code Playgroud)
- 新的:
gunzip < gitlab.sql.gz | mysql gitlab
Run Code Online (Sandbox Code Playgroud)
运行该
db migrate命令以确保架构已更新到最新版本.
sudo -u gitlab -H bundle exec rake db:migrate RAILS_ENV=production
Run Code Online (Sandbox Code Playgroud)
对于GitLab版本<8.9,没有内置的导出/导入功能,我推荐使用Marcus Chmelar的一个很棒的工具,gitlab-migrator.我使用较旧的GitLab版本多次成功使用它,所以你也应该这样做.请注意其局限性.
| 归档时间: |
|
| 查看次数: |
43506 次 |
| 最近记录: |