<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.archlinux.jp/index.php?action=history&amp;feed=atom&amp;title=Gitosis</id>
	<title>Gitosis - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.archlinux.jp/index.php?action=history&amp;feed=atom&amp;title=Gitosis"/>
	<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Gitosis&amp;action=history"/>
	<updated>2026-05-05T00:27:49Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.44.3</generator>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Gitosis&amp;diff=17118&amp;oldid=prev</id>
		<title>Kusanaginoturugi: /* インストールとセットアップ */ typo</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Gitosis&amp;diff=17118&amp;oldid=prev"/>
		<updated>2020-07-31T06:04:38Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;インストールとセットアップ: &lt;/span&gt; typo&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2020年7月31日 (金) 15:04時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;25行目:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;25行目:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;note|場合によって&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;hあ&lt;/del&gt;、以下のようなエラーが発生することがあります:&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;note|場合によって&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;は&lt;/ins&gt;、以下のようなエラーが発生することがあります:&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; OSError: [Errno 13] Permission denied: &#039;//gitosis&#039;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; OSError: [Errno 13] Permission denied: &#039;//gitosis&#039;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;!-- diff cache key bnbest_wiki:diff:1.41:old-6732:rev-17118:wikidiff2=table:1.14.1:bc2a06be --&gt;
&lt;/table&gt;</summary>
		<author><name>Kusanaginoturugi</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Gitosis&amp;diff=6732&amp;oldid=prev</id>
		<title>Kusakata: 翻訳</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Gitosis&amp;diff=6732&amp;oldid=prev"/>
		<updated>2016-12-14T14:59:03Z</updated>

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