私はGitとGitoliteを機能させる最終段階にあります。これが現在の状況です。
2 に答える
Gitoliteの管理下にあるリポジトリには、作業用のコピーがありません。したがって、あなたがしなければならないのは、作業コピーを使用して別のリポジトリを作成し、データをコミットして、それらをギトライト管理のリポジトリにプッシュすることです。最も簡単なことは、サーバー上で直接それを行うことです。したがって、各www
ディレクトリの下で、次の手順を実行します。
cd /home/X/www
git init
git remote add origin /home/gitolite/repositories/X.git
git add .
git commit
git push origin
これで、リポジトリにデータがあります。これは簡単な部分でした。同じユーザーアカウントが(チャットで言ったように)gitoliteリポジトリとサーバーデータの両方にアクセスできると想定しています。これにより、問題が非常に簡単になります。
現在、リポジトリには代替がないため、データのコピーが2つあります。それらを削除するには、各サイトで行うのがおそらく最も簡単です。
cd /home/X
git clone -s /home/gitolite/repositories/X.git www.new
mv www www.old
mv www.new www
rm -r www.old
(-s
クローンを作成するオプションにより、/home/X/www/.git
リポジトリがからデータをコピーしないことが保証されます/home/gitolite/repositories/X.git
)。そして最後に、フックを取り付ける必要があります。この質問ではすでに説明されていますが、状況は少し簡単です。データは同じサーバー上に同じユーザーの下に存在するため、以下を含むすべてのgitoliteリポジトリに更新後のフックをインストールするだけです。
#!/bin/sh
cd /home/X/www
git pull
リポジトリとWebサーバーを別々のサーバーに移動したい場合(Webサーバーが表向きの場合は「非武装地帯」にある必要がありますが、内部ではgitサーバーの方が適しているためです。別のファイアウォールラインの背後にあるネットワーク)、もちろん、他の質問で説明されているsshトリガーが必要になります。
私はあなたが言っていることをある程度理解しているので、私がベースから外れている場合はコメントを残してください、しかしあなたはあなたがあなたのマシンに作成しgit clone
た空のリポジトリに行く必要があります、そしてあなたは.git
あなたの作業ディレクトリにディレクトリをコピーすることができます。これにより、リモートが保持されます。
プロセスは次のようになります。
git clone gitolite:a.git
# Message about copying an empty repo
cp -R a/.git/ /your/home/directory/a
コピーした後.gitignore
、必要に応じてセットアップし、追加/コミットしてから、そのgit add .
ようなことgit commit -m "initial commit"
をgit push origin master
行うと、空のリポジトリにデータが入力されます。