gogsはgitlabに移行します

移行をチャットする最初のアイデア、COGSはgitlab、またはCOGSをgitlabに移行、またはgitlabのgitlab段階に移行するかどうかへの移行、マニュアルの移行は、図にgitlab上に新しい空のプロジェクト(以下の通りです。このようプロンプト)があり、

1.(私はgitのリモートRM原点を使用し、このコマンドの最初のステップ)を、元のリモートアドレスを削除して、倉庫のプロジェクトに移動します

2. New新しいリモートアドレスを指定します。

3.新しいリモートアドレスへのすべての支店をアップロード

4.新しいリモートアドレスにすべてのタグをアップロード

existing_repoのCDの
gitのリモートRM起源は、
リモート原点追加gitのzhouyou / zytest.git:[email protected]
gitの原点をプッシュ-u --all 
--tags起源-uプッシュgitの
2.すべての項目の移行、それが実現されなければならないスクリプト実装は、手順
1.アドレス移行プロジェクトへのすべてのアクセスを取得し
、私は比較的時間のかかるこのアプローチを使用(熟練し、その後、10分を使用してメモ帳++とあなたが得る)gogsサーバー上に作成されたそれぞれの人のための項目を取得します以下、我々はgogsの対応するデータディレクトリ内のすべての従業員の名前持って

、コマンドツリー-L 2(YUMツリー-yをインストールツリーを指揮していない、カレントディレクトリから下方に2つのディレクトリを参照)、図を使用しますb。以下の項目を確認することができ、各ユーザが、++全てのメモ帳にコピー&ペーストする(他のテキストエディタであってもよい)C.は、

テキストエディタで、次の図の形式に編成され、アクセスアドレスgogs.haha.local (各企業のドメイン名が異なっているため、IPがあるかもしれない)に固定され、ユーザー名とプロジェクトの構図が続く、従うべきルールがあります。正面に赤箱、それが使用され、ユーザー名・パスワードの背後にある(ここで注意、あなたはすべてのプロジェクトの私のgogsamdinユーザーに示すように、すべてのアイテムに、一般的なユーザーを追加する必要があります)スクリプトクローン

D次いで、図(テキストエディタの使用の彼のレベルで、高速を達成することができ、メモ帳++)に示すように、Pythonリストデータを認識するために調整図3の調整の形式のデータ、。

2.获取到所有项目的访问地址后,我们需要把所有项目clone至本地的一个目录
3.克隆完成后,要对每个项目的所有分支进行checkout,因为上传分支的时候只会将本地所存在的分支上传至远程地址,不存在的不上传。clone完成后本地只有一个master分支,需要想办法获取远程所有分支名称然后checkout一遍
4.checkout完成后,就可以删除旧的源(origin),新增新的源,并把分支和tag上传至新的源
下面附上脚本,一个是python,一个是shell脚本
PS:先执行python脚本,脚本执行完成之后再执行shell脚本,shell脚本的存放目录和gog-to-gitlab3是同一级
gogs_to_gitlab.py
#coding=utf-8
# @Time:2019/7/26 16:52
# @Author:ZHOUYOU
# from git import Repo
# import os
from git import Repo
import git
import os
rep_list  =  ['http://gogsadmin:[email protected]/masibin/fec-device','http://gogsadmin:[email protected]/masibin/fec-install','http://gogsadmin:[email protected]/zhangyan/fec-cms']
path = 'D:\gogs-to-gitlab3'
for i in rep_list:
    #从列表中获取每个项目的项目名称,并创建对应文件夹
    folder = i.split('/',-1)[4]
    print(folder)
    folder_name = './'+folder
    os.mkdir(path+folder_name)
    Repo.clone_from(url=i,to_path=path+folder_name)

    #获取远程分支的分支名称
    repo = git.Repo(path+folder_name)
    remote_branches = []
    for ref in repo.git.branch('-r').split('\n'):
        remote_branches.append(ref)
    print(remote_branches)
    del remote_branches[0]
    print(remote_branches)

    #获取分支名称
    bran_name = []
    for bran in remote_branches:
        print(bran.split('/',-1)[1])
        bran_name.append(bran.split('/',-1)[1])
    print(bran_name)

    #在本地切换一遍分支,因为在上传至新的gitlab库时,只会把已存在的本地分支上传,没有的不会上传,所以必须把所有分支都切换一遍
    for bran in bran_name:
        repo.git.checkout(bran)
#!/bin/sh 
cd gogs-to-gitlab3
for i in `ls`;
do 
echo ======into $i
cd $i
git remote rm origin
git remote add origin http://ip:port/XXXX/$i.git(此处根据自己实际情况填写地址)
git push -u origin --all
git push -u origin --tags
cd ..
done

 

 

 

 

 

 

 

 

 

 

おすすめ

転載: www.cnblogs.com/zy0209/p/11265158.html