Home
Packages
Forums
Wiki
GitLab
Security
AUR
Download
コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
目次
コミュニティに貢献
最近の出来事
おまかせ表示
特別ページ
交流
ヘルプ
貢献
最近の更新
最近の議論
新しいページ
統計
リクエスト
ArchWiki
検索
検索
表示
アカウント作成
ログイン
個人用ツール
アカウント作成
ログイン
Gitosisのソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
ページ情報
表示
サイドバーに移動
非表示
←
Gitosis
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
[[Category:バージョン管理システム]] [[en:Gitosis]] [[tr:Gitosis]] Gitosis はサーバー上の [[Git]] リポジトリのアクセス制御やリモート管理をするためのツールです。SSH 経由の読み書き権限を細かく管理することができ、サーバー上にローカルシステムアカウントを作成する必要がありません。Git を扱うときは {{ic|git}} アカウントだけが使われます。 Gitosis は [http://eagain.net/gitweb/?p=gitosis.git;a=blob;f=README.rst;hb=HEAD README] ファイルにインストール手順を記載しています。以下のガイドは README を元に作成しています。 == インストールとセットアップ == [[AUR]] から {{AUR|gitosis-git}} パッケージをインストールしてください。以下のものが作成されます: * {{ic|git}} ユーザー。 * {{ic|git}} ユーザーが所属する {{ic|git}} グループ。 * Gitosis のデータやリポジトリを保存する {{ic|/srv/gitosis}} ディレクトリ。 Gitosis を設定するとき、サーバー上のファイルを直接編集することはありません。代わりに、Gitosis は設定のための Git リポジトリを用意します。設定を更新するには、{{ic|gitosis-admin}} リポジトリを複製して、コミットし、プッシュしてください。他のリポジトリと扱い方は変わりません。 Gitosis は [[SSH 鍵]]を使用してユーザーを認証するため、管理リポジトリ用にキーペアを生成する必要があります。キーペアがない場合、{{ic|ssh-keygen}} を使うことで生成できます: $ ssh-keygen -t rsa 以下のコマンドで管理リポジトリを初期化できます: $ sudo -H -u git gitosis-init < /path/to/public_key.pub Initialized empty Git repository in /srv/gitosis/repositories/gitosis-admin.git/ Reinitialized existing Git repository in /srv/gitosis/repositories/gitosis-admin.git/ {{ note|場合によってhあ、以下のようなエラーが発生することがあります: OSError: [Errno 13] Permission denied: '//gitosis' git のホームディレクトリが正しく設定されていないのが原因です。手動で設定することで解決します: # usermod -d /srv/gitosis git }} 上記のコマンドによってホストされるリポジトリを保存するのに使われる {{ic|/srv/gitosis/repositories}} ディレクトリも作成されます。 管理者リポジトリの初期化が完了したら、git ユーザーのパスワードによる SSH ログインを無効化したほうが良いでしょう。 {{ic|/etc/ssh/sshd_config}} の末尾に、以下を追加してください: Match User git PasswordAuthentication no == 設定 == 上で書いたように、Gitosis の設定は {{ic|gitosis-admin}} リポジトリにプッシュすることで行います。リポジトリを複製するには、以下のコマンドを実行: $ git clone git@your.git.server:gitosis-admin.git {{ic|gitosis-admin}} リポジトリには以下のファイルとディレクトリが存在します: * {{ic|gitosis.conf}} – Gitosis やリポジトリのパーミッションの設定ファイル * {{ic|keydir}} – 各ユーザーの公開鍵を保存するディレクトリ リポジトリやユーザーの設定を変更したり Gitosis を設定するときは、変更をコミットしてサーバーにプッシュしてください。 === リポジトリとパーミッション === {{ic|/usr/share/doc/gitosis}} にサンプル設定ファイルが存在します: [gitosis] gitweb = yes [repo foobar] description = Git repository for foobar owner = user [group devs] members = user1 user2 [group admins] members = user1 [group gitosis-admin] writable = gitosis-admin members = @admins [group foobar] writable = foobar members = @devs [group myteam] writable = free_monkey members = jdoe [group deployer] writable = free_monkey readonly = monkey_deployer 上記では "free_monkey" という名前の新しいグループを定義しています (名前は自由です)。myteam メンバーの "jdoe" は "gitosis" リポジトリの書き込み権限を持っています。"monkey_deployer" は "free_monkey" への読み取り権限しか持っていません。 変更した {{ic|gitosis.conf}} ファイルを保存したらコミットしてプッシュします: $ git commit -a -m "Allow jdoe write access to free_monkey" $ git push ユーザー "jdoe" が "free_monkey" という名前のリポジトリに書き込めるようになりましたが、まだリポジトリを作成していません。新しいリポジトリをローカルで作成して、Git サーバーで初期化し、プッシュしてください: $ mkdir free_monkey $ cd free_monkey $ git init $ git remote add origin git@YOUR_SERVER_HOSTNAME:free_monkey.git 何か変更を加えたら git add を実行してファイルをコミットします: $ git push origin master:refs/heads/master SSH を使用している場合、"does not appear to be a Git repository" というエラーメッセージを表示してコマンドが失敗します。サーバー上で手動でリポジトリを初期化することで解決できます: $ git init --bare /srv/gitosis/repositories/free_monkey.git コマンドを再度実行してみてください。 サーバー ({{ic|/srv/gitosis/repositories}}) 上に "free_monkey" リポジトリを作成できたら、後は他の Git リポジトリと同じように使うことができます。 Gitosis のリポジトリは gitweb から使うこともできます。gitweb の設定でリポジトリが含まれているディレクトリを指定してやってください。 === ユーザーの追加 === 次にすることは当然、幸運なひと握りの人たちに FreeMonkey プロジェクトへのコミット権限を与えることです。2ステップで行うことができます。 まず、ユーザーの SSH 公開鍵を入手して (ここでは仮に "alice.pub" と "bob.pub" とします)、gitosis-admin リポジトリの {{ic|keydir/}} ディレクトリに保存してください。次に、{{ic|gitosis.conf}} を編集してユーザーを "members" リストに追加します: $ cd gitosis-admin $ cp ~/alice.pub keydir/ $ cp ~/bob.pub keydir/ $ git add keydir/alice.pub keydir/bob.pub 鍵のファイル名には ".pub" 拡張子が必要です。 {{ic|gitosis.conf}} は以下のように変更します: [group myteam] members = jdoe alice bob writable = free_monkey コミットしてプッシュ: $ git commit -a -m "Granted Alice and Bob commit rights to FreeMonkey" $ git push これで Alice と Bob は以下のコマンドで free_monkey リポジトリを複製してコミットできるようになります: $ git clone git@YOUR_SERVER_HOSTNAME:free_monkey.git === 公開アクセス === 公開プロジェクトの場合、特定のユーザーにコミット権限を与え、他の人にも読み取り権限を与えることになります。 git-daemon を使うことで SSH 鍵を使わずに読み取れるようになります。git-daemon は Gitosis とは直接関係していないツールで Git に付属しています。 $ sudo -u git git-daemon --base-path=/srv/gitosis/repositories/ --export-all 上記のコマンドで Gitosis で管理している全てのリポジトリが誰からでも読み込めるようになります。以下のコマンドで FreeMonkey を複製できます: $ git clone git://YOUR_SERVER_HOSTNAME/free_monkey.git 一部のリポジトリだけを公開したい場合、公開したい各リポジトリのルートディレクトリ (例 {{ic|/srv/gitosis/repositories/free_monkey.git}}) に git-daemon-export-ok ファイルを作成してください。そして上記の git-daemon コマンドから "--export-all" を外して実行してください。 === 他の設定 === {{ic|gitosis.conf}} では他のことも設定できます。Gitosis のソースディレクトリにある {{ic|example.conf}} には全てのオプションの説明が書かれています。一部のリポジトリを非公開の読み取り専用リポジトリにしたり、グループメンバーのリストから他のグループを読み込んだりすることができます。 変更をプッシュしてもサーバー上の {{ic|/srv/gitosis/.gitosis.conf}} が更新されない場合、post-update フックが実行できないことが原因かもしれません。古いバージョンのセットアップツールでは権限が設定されないことがあります。以下のコマンドで修正できます: # chmod 755 /srv/gitosis/repositories/gitosis-admin.git/hooks/post-update Python が標準ディレクトリに存在しない場合、post-update を編集して一番上に "export PYTHONPATH=..." を記述してください。設定しないと gitosis-admin で変更をプッシュしたときに Python のスタックトレースが表示されてしまいます。 Gitosis を標準のディレクトリ以外にインストールすることは推奨しません。 === 非標準の SSH ポート === サーバーで動作させている SSH のポートが標準のポートではない場合、Git で接続するポートを指定する方法が2つあります。1つは SSH プロトコルの使用を明示的に指定して、URL にポート番号も加える方法です: git clone ssh://git@myserver.com:1234/repo.git もしくは {{ic|~/.ssh/config}} ファイルに以下を記述してください: Host myserver.com Port 1234 * [repo] ブロックは gitweb で使用するのに必要な領域を定義します。 * [group] ブロックは以下のために使われます: ** ユーザーグループの定義 ** リポジトリのパーミッションの定義 * @ はユーザーグループの定義に使われます。 ファイルに変更を加えたらコミット・プッシュしてください。 === keydir === keydir はユーザーの公開鍵を保存するディレクトリです。鍵によっては user@machine という形式になっていることがあり {{ic|gitosis.conf}} で鍵の形式を定義する必要があります。ユーザーグループを作成してリポジトリのメンバーとして使用すると良いでしょう。新しいユーザーが使えるように鍵を追加したら、Git リポジトリにファイルを追加してコミット・プッシュしてください。gitosis-admin リポジトリを複製したときと同じような Git コマンドが新しいユーザーから使えるようになります。 == 参照 == * [https://github.com/tv42/gitosis Gitosis のソース] * [[Gitolite]] – Gitosis と同じような機能を提供する Gitosis の代替 * [http://repo.or.cz/w/girocco.git Girocco] – repo.or.cz で使われている Git ホスティングコード * [http://gitorious.org/gitorious/pages/Home Gitorious] – オープンソースの Git ホスティング * [[Gitlab]] – [[Ruby on Rails]] と [[Gitolite]] によるフリーの Git リポジトリ管理アプリケーション。
このページで使用されているテンプレート:
テンプレート:AUR
(
ソースを閲覧
)
テンプレート:Ic
(
ソースを閲覧
)
テンプレート:Note
(
ソースを閲覧
)
Gitosis
に戻る。
検索
検索
Gitosisのソースを表示
話題を追加