zoukankan      html  css  js  c++  java
  • 在服务器端将现有Git项目导入GitLab

    GitLab是由Ruby语言开发的基于Linux的Git服务器,是我见过的最强大的Git服务器。发现它之后,立即决定将Git服务器换成GitLab。

    但安装好GitLab之后面临一个问题,如何将服务器上的git项目直接导入到GitLab,之前的Git服务器是由是git+apache搭建的(详见在Linux上用Apache搭建Git服务器)。

    在网上发现了这篇文档——Import bare repositories into your GitLab instance,并按之进行了操作。

    1)设置存放代码库的主目录

    vi /etc/gitlab/gitlab.rb

    比如这里设置为:git_data_dir "/gitlab/repos"

    2)访问刚搭建的GitLab站点,创建一个group,比如cnblogs。

    这时会在 /gitlab/repos 下创建 /gitlab/repos/repositories/cnblogs 文件夹。

    然后在/gitlab/repos/repositories/创建一个文件夹,比如cnblogs

    3)将现有的所有git项目文件复制到这个文件夹

    cp -r /data/git/* /gitlab/repos/repositories/cnblogs

    4)修改一下复制过来的文件夹的所有者:

    chown -R git:git /gitlab/repos/repositories/cnblogs

    5)运行GitLab导入命令

    cd /var/opt/gitlab
    gitlab-rake gitlab:import:repos

    等了一段时间之后,显示done,却一个项目也没导入进来。

    经研究发现,在导入时,GitLab只认文件夹名以.git结尾的项目。于是,将要导入的项目文件夹名称加上.git后缀,再次进行导入。

    结果显示导入成功,比如:

    Processing cnblogs/CNBlogsJob.git
     * Created CNBlogsJob (cnblogs/CNBlogsJob.git)
    Done!

    可以是GitLab站点上却看不到已导入的项目。多次努力,也没能解决这个问题。

    后来,实在没办法,改为手动导入,导入方法如下:

    1)在GitLab站点上创建与要导入的项目同名的项目。

    2)进入刚创建的项目文件夹

    cd /gitlab/repos/repositories/cnblogs/项目名称.git

    3)删除该文件下的所有文件

    rm -rf *

    4)将要导入的项目文件夹下的所有文件复制过来

    cp -r /data/git/CNBlogsJob/* /gitlab/repos/repositories/cnblogs/CNBlogsJob.git

    就这样将项目一个一个地导入进来。

    5)导入完成后,修改一下导入的所有项目的文件所有者

    chown -R git:git /gitlab/repos/repositories/cnblogs

    如果不修改所有者,客户端无法进行git push。

    就这样手动地完成了现有Git项目的导入。

    备注:操作系统是CentOS 6.2,GitLab版本是7.8.4。

  • 相关阅读:
    JUC原子类 1
    线程优先级和守护线程
    多线程中断
    关于html5不支持frameset的解决方法
    shell中$0,$?,$!等的特殊用法
    Linux GCC常用命令
    C/C++中extern关键字详解
    js实现iframe自适应高度
    java线程安全总结
    Linux平台Java调用so库-JNI使用例子
  • 原文地址:https://www.cnblogs.com/dudu/p/import-bare-repos-into-gitlab.html
Copyright © 2011-2022 走看看