2

私は Git を使用して (iOS) プロジェクトのソース コードを管理しています。ただし、サーバー側のコンポーネントを追加し始めています。サーバー側のコードが同じリポジトリに保持されていることを確認したいのですが、メインのコードとは分離されており、Web サーバーにセットアップされています。コードベースと履歴全体にアクセスできないようにします。1 台はローカル、もう 1 台は Web サーバー上にある 2 台のコンピューター上にあるコードベースを操作するための理想的な Git ワークフローは何ですか? (ちなみに、Gitファイルと履歴を非表示にするサーバー構成の設定方法に関して違いがある場合は、Nginxを使用しています。)

4

1 に答える 1

2

最初の質問に関しては、サーバー側がまだスタンドアロン プロジェクトであるという方法で、クライアント側とサーバー側を一緒に追跡する方法です。サーバー コードをサブモジュールとしてクライアント プロジェクトに組み込むことができます。

~/client$ git submodule add foo@bar:server.git
~/client$ git commit

これにより、SSH URL でアクセス可能なサーバー リポジトリがfoo@bar:server.gitクライアント プロジェクトのサブディレクトリ サーバーに挿入されます。サブモジュールの代替は、サブツリーのマージです。

サーバーコードをnginxにチェックアウトすることについて。サーバーのどこかに裸のレポを作成し、/var/git/server.git としましょう。そのワークツリーを /var/www/server/ に設定します。

cd /var/git
mkdir server.git && cd server.git
git init --bare
git config --bool core.bare false
git config --path core.worktree /var/www/server/

post-receive フックをセットアップして、ワークツリーを新しい HEAD にチェックアウトします。

echo '#!/bin/sh' > hooks/post-receive
echo 'git reset --hard HEAD' >> hooks/post-receive

上記を指す開発でリモートを設定します。

client/server$ git remote add www root@bar:/var/git/server.git
client/server$ git push www master

またはそのようなもの...

于 2013-08-09T22:54:57.900 に答える