2011-06-22 16 views
3

小さな開発チームにはVCSとしてgitを使用しています。私は裸のgitリポジトリとして私たちのサーバー上のメインリポジトリを保持します。表示専用のgitクローンを作成するには

プロジェクトに関与していない管理者や人々は、コードとドキュメントをgitについて知らずに見ることができる必要があります。そのため、私たちのサーバ上でクローンを閲覧しています。クローンを最新の状態に保つために、誰かが裸のリポジトリにコミットするたびにクローンのマスターブランチを更新するフックをインストールしました。

問題があります:ナックルヘッドの中には常にブラウジングクローンに入り、コードを修正し始めると、マスターブランチプッシュ操作が失敗することがあります。私は、この1つのクローンに対して読み取り専用のポリシーを実施する方法、またはそれを最新の状態に保つための別の方法を見つけ出す方法を理解したいと思います。

答えて

4

このような状況に対処するための最良の方法は、問題のナックルとの良好な話をしています。

それ以外の場合は、オペレーティングシステムの権限システムを使用するだけです。そのため、ファイルは、裸のリポジトリから更新されるスクリプト以外のすべてのユーザーに対して読み取り専用になります。

また裸のレポから引っ張って前に--hardgitのクリーン-fをリセットすることができます。

(おっと、申し訳ありませんが、スクリプトは????作業の2週間一掃んでした)

+1

うーん、悪い考えではなく、かなりありません。開発者がRepoを押すと、その開発者のユーザーIDの下でフックスクリプトが実行されるため、クローンからすべての開発者を禁止する必要があります。 私はgit reset -hardを使っても構わないかもしれませんが、クローンでそれを引き起こす方法はわかりません。現在、更新はrepoのコミットによってトリガされ、フックはプッシュコマンドです。また、エラーメッセージ "パスでハードリセットできません" – mjohnson

+0

私は、開発者が裸のリポジトリファイルへのアクセスを要求したことに気づいていませんでした。私はssh + keyfileまたはgit-daemonのアクセスを想定していました。あなたがそのルートに行きたくない場合、Unix/MacOSX上でプルスクリプトを追加し、/ etc/sudoersを設定して、devsがsudoを使って 'view-only'ユーザー。フックは 'sudo/usr/local/bin/pull_new_version'を使用して呼び出すことができます –

+0

私はいくつかの例が興味を持っています、 –

3

gitwebcgitまたはその他のHTTPベースのリポジトリブラウジングインターフェイスからアクセスするだけではどうですか?

https://git.wiki.kernel.org/index.php/Gitweb

+0

さて、私たちはLinuxのコマンドラインインターフェースの会社で、管理しています。それは最後の手段の選択肢かもしれない。 – mjohnson

0

gitのクローンを読み取り専用にする方法はありません。同様の効果が得られる2つの回避策があります。

1つの方法は、ファイルとフォルダのアクセス許可を読み取り専用に変更することです。

私が考えることのできる別の方法は、サーバー上のパーミッションシステムを使用することです。
gitoliteを使用すると、リポジトリを使用して特定のユーザー/グループに読み書きアクセスまたは読み取り専用アクセスを許可できます。
他のgit管理ソフトウェアのリストがあります:https://git.wiki.kernel.org/index.php/Interfaces,_frontends,_and_tools#Access_control_.2F_Project_hosting

+0

によさそうだ破ります私は権限が動作しないと思っています。私はキャッチ22に入っています。私は開発者がクローンにアクセスするのを望んでいませんが、開発者にクローンにアクセスしてポストコミットプッシュフックが機能するようにする必要があります。 Bah。 – mjohnson

+0

あなたはソーシャルで話しています。 「開発者にクローンにアクセスさせたくないが、開発者にクローンにアクセスさせる必要がある」私はあなたを正しく理解している。コードを表示する必要がありますが、コードをコミットまたは編集する必要はありません。 – pandabear41

関連する問題