OSXには多くのローカルgitリポジトリがあります。コマンドラインを使用して https://gitlab.ccompanyname.com に新しいgitlabリポジトリを作成し、既存のローカルリポジトリを作成します。
それは可能ですか?
GitLabにプッシュするローカルリポジトリごとに、GitLabで新しい空のプロジェクトを作成します。プロジェクトを作成すると、デフォルトのプロジェクトページに移動します。
次に、既存の各gitリポジトリにcdします。 git remote add Origin <your new gitlab repo address>
を実行します
そして、git Push -u Origin master
追加するリポジトリごとにこれを行う必要があります。
リポジトリのアドレスは、プロジェクトページで提供されます。 httpおよび/またはsshとして。ローカルマシンにすでにOriginというリモートがある場合、最初に名前を変更することをお勧めします。または、gitlabを別の何かと呼ぶことができます。また、すべてのブランチをgitlabにプッシュする場合は、git Push --all Origin
を実行できます。タグが必要な場合は、git Push --tags Origin
--set-upstream
を使用するだけローカルリポジトリごとに次の処理を行うスクリプトの作成を担当すると仮定すると、Gitlab 10.5の時点で簡単にできるようですつかいます
git Push --set-upstream address/your-project.git
これにより、Gitlabで新しいプロジェクトが作成されます。サーバーで手動で作成する必要はありません
GitLabに移動して新しいプロジェクトを手動で作成してからレポジトリをプッシュする代わりに、ローカルで新しいレポジトリを作成すると、GitLabに直接プッシュして新しいプロジェクトを作成できます。その名前空間にアクセスできる場合、そのGitLab名前空間の下に、デフォルトで可視性がプライベートに設定された新しいプロジェクトが自動的に作成されます(プロジェクトの設定で後で変更できます)。
これは、SSHまたはHTTPを使用して実行できます。
## Git Push using SSH
git Push --set-upstream [email protected]:namespace/nonexistent-project.git master
## Git Push using HTTP
git Push --set-upstream https://gitlab.example.com/namespace/nonexistent-project.git master
プッシュが正常に終了すると、リモートメッセージに、リモートを設定するコマンドと新しいプロジェクトのURLが示されます。
remote:
remote: The private project namespace/nonexistent-project was created.
remote:
remote: To configure the remote, run:
remote: git remote add Origin https://gitlab.example.com/namespace/nonexistent-project.git
remote:
remote: To view the project, visit:
remote: https://gitlab.example.com/namespace/nonexistent-project
remote:
GitlabのAPIラッパー サードパーティアプリケーション のドキュメントは理想的ではありませんが、そのうちの1つを機能させることができたことに同意する必要があります。
このために、Ubuntu 14.04を実行している浮浪者ボックスにサンドボックスgitlabサーバー(GitLab Community Edition 8.0.5)をセットアップします。
さて、私が使用したAPIラッパーは this one (python-gitlabbyGauvain Pocentek)です。私がこれを選んだのは、十分な人が星を付けているため(執筆時点で118)、pythonで書かれているため、移植性は問題になりません(私のホストマシンはWindowscygwinを使用しますが、この回答にはUNIX構文を使用します)。
pip
を使用すると、インストールは非常に簡単です。
$ Sudo pip install python-gitlab
インストールしたら、構成ファイルを変更する必要があります-存在しないすぐに使用できるまたは、少なくとも、見つけることができませんでした(ドキュメントはありませんでした)これについて明確に)。このファイルの「公式」名は.python-gitlab.cfg
であり、これはconfig.pyがデフォルトで検索するものです。
とにかく、プロジェクトの github にあるサンプル構文に基づいて、.python-gitlab.cfg
の独自のバージョンを作成しました。
[global]
# required setting
default = local
# optional settings
ssl_verify = false
timeout = 5
[local]
# url = http://10.0.3.2:8080
# get the private token from the gitlab web interface
# private_token = vTbFeqJYCY3sibBP7BZM
[remote]
url = YOUR SERVER URL GOES HERE
private_token = YOUR PRIVATE TOKEN GOES HERE
ssl_verify = false
[remote-ssl]
url = YOUR HTTPS URL GOES HERE (eg https://gitlab.ccompanyname.com))
private_token = YOUR PRIVATE TOKEN GOES HERE
ssl_verify = true (VALID CERTIFICATE) OR false (SELF-SIGNED CERTIFICATE)
Webインターフェイスからプライベートトークンを取得する必要があります(Profile Settings::Account) README指摘、
プライベートトークン認証のみがサポートされます(ユーザー/パスワードはサポートされません)。
これを処理した後、プロジェクトの作成は、http
に対して次のように実現できます。
$ gitlab -c "PATH/TO/YOUR/.python-gitlab.cfg" --gitlab remote project create --name YOUR_PROJECT_NAME
https
の場合:
$ gitlab -c "PATH/TO/YOUR/.python-gitlab.cfg" --gitlab remote-ssl project create --name YOUR_PROJECT_NAME
上記で使用したスイッチは、ヘルプを見ると見つかります。
$ gitlab --help
ここで、assumingSSHキー(ローカルとWebインターフェースの両方)を処理し、gitlabリポジトリ名をディレクトリ内のディレクトリと同じにすることを想定しています次に、ローカルgit、次のような小さなbash
スクリプトを使用して、プロジェクトの作成とローカルリポジトリプッシュを自動化できます。
#!/usr/bin/bash
cd 'PATH/TO/YOUR/REPOS/DIRECTORY' # enter your local repos dir here
server="YOUR SERVER" # enter your server URL
user="YOUR USER" # enter your user name
gitlab_cfg="PATH/TO/YOUR/.python-gitlab.cfg" # enter the location of config file
#method="remote" # uncomment for http, comment for https
method="remote-ssl" # uncomment for https, comment for http
for i in $( ls -1 ); do
echo
echo
echo '>> Creating Project'
gitlab -c $gitlab_cfg --gitlab $method project create --name $i
echo '>> Project ' $i 'created'
echo '>> ------'
cd $i
li=$( tr '[A-Z]' '[a-z]' <<< $i) # convert dirname to lowercase, safe with older bashes (<4)
Origin="git@$server:$user/$li.git"
echo ">> Reassigning Origin to : $Origin"
git remote rm Origin
git remote add Origin $Origin
git remote -v
echo '>> Pushing local repo to gitlab'
git Push -u Origin master
echo '>> Done'
echo
echo
cd ..
done
echo
echo 'Operation finished'
それは、外側のローカルgitディレクトリで見つかったディレクトリ名にちなんで名付けられたgitlabプロジェクトを作成し、それらのそれぞれにcd
を追加し、Originを更新してからプッシュを実行します。
ここで言及すべきことの1つは、gitlabがリポジトリのURLを小文字に変換することです。たとえば、sampleRepo001
はリポジトリのURLでsamplerepo001
になります。そのため、スクリプトでディレクトリ名を小文字に変換しています。
そして最後に、スクリプトの実行例を次に示します。
念のため、このスクリプトを使用する場合は、実際の運用サーバーに適用する前に徹底的にテストしてください。
Update-HTTPS/SSLの処理方法に関する情報を追加しました。
git-repoはあなたのために汚い仕事をしました。また、GitLab、GitHub、Bitbucketもサポートしています。
apt-get install python-pip
pip install git-repo
上記のコマンドが機能しない場合は、pip3が必要になる場合があります。
(optional)
apt-get install python3-pip
pip3 install git-repo
git repo config
コマンドラインツールは、bitbucket、github、gitlabアカウントをセットアップするかどうかを段階的に尋ね、それに応じて「y/n」とユーザー名/パスワードを押します。意味がわからない場合は、「n」を押してスキップします。構成ファイルは~/.gitconfig
に生成されます。後で微調整することもできます。
(オプション)たとえば、次のように〜/ .gitconfigにトークンを手動で設定できます。
[gitrepo "gitlab"]
token = xxxxxxx
[gitrepo "github"]
token = xxxxxxx
〜/ .gitconfigに次の行を追加します。
[alias]
hub = repo hub
lab = repo lab
どうして?
なぜなら、今では単にshortcut
を使用できるからです
git lab clone/howto
git hub clone/howto
将来は。
注:authentication
リポジトリーを複製するにはprivate
が必要です
cd ~/.ssh
id_rsa.pub
ファイルがあるかどうかを確認してください。 pub
はパブリックファイルを意味します。コンテンツ全体をcopy
、gitlab.comのパブリックssh Webページにpaste
だけを使用することをお勧めします。
完了。
対応するファイルid_rsa
について他の人に見せないでください。これは、gitlabリポジトリにアクセスするためのキーです。 id_rsa
を持ち、許可chmod 600 id_rsa
を持つ他のクライアント/コンピューターは、リポジトリを制御できます。
id_rsa.pub
が表示されない場合は、次を使用して生成できます。
ssh-keygen -t rsa
enter
を押してデフォルトのままにします。これで、〜/ .sshディレクトリ内にid_rsa.pub
とid_rsa
が表示されます。デフォルトでid_rsa以外の別の名前を使用している場合、〜/ .ssh/configファイルを次のように変更する必要があります。
# private account
Host github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github
新しいプロジェクトを開始するときに、GitLabから次の場所にプッシュする新しいリポジトリを作成します。
git lab create <username>/howto
もちろん、削除したり、リポジトリをリストしたり、その他のことを行うことができます。
git lab delete <username>/howto
git lab list <username>
git lab clone <username>/howto
git clone [email protected]:<username>/howto
しばらくコミットされたgitでローカルのmyproject
ディレクトリを開発したと仮定します。次に、GitLabにアップロードします。
gitlabでリモートリポジトリを作成します。 gitlabページにusername/myprojectが表示されます。
git lab create username/myproject
ローカルmyprojectディレクトリの下に.gitファイルがあると仮定します
cd myproject
ローカルディレクトリをリモートgitlab.comリポジトリにリンクします。
git lab add username/myproject
myprojectディレクトリをgitlab.comにアップロードします
git Push -u gitlab master
やった
Nodejsを使用する場合、または単純に理解している場合でも、 node-gitlab モジュールは素晴らしいです。自己ホスト型のGitlabインスタンスで、プロジェクトを作成し、リモートリポジトリ(ローカルgitサーバー)からリポジトリをインポートすることができました。このプロセスは、ローカルリポジトリの場合と同様である必要があります。マシンにローカルgitサーバーをセットアップし、それを各Gitlabプロジェクトのimport_urlとして使用できます。
または、APIを使用してプロジェクトを作成し、各リポジトリをそれぞれのプロジェクトにプッシュするスクリプトを作成できます。
擬似コード:ディレクトリ内の各リポジトリに対して: