Repository Magagement
- リポジトリ集中型/分散型
-
開発モデルとは直交
- Gitを用いた開発モデルはあくまで分散型
- リポジトリ集中型でも、個々の開発者は手元にcloneして作業する = 分散型開発モデル
A Word About Servers
- 「サーバー」という言葉はゆるく色々な意味で使われがち
- Git的にはどういう意味?
-
Gitでは、他の多くのVCSとは異なり、中央サーバは必要ない
- Gitのプロトコル上、特別なサーバーというものは存在しない
-
Gitの「サーバー」は何をするの
- 更新をやりとりする固定的な場所の提供
- 認可、アクセス制御
- サーバラックに入っててマシンパワーのあるやつ
Publishing Repositories
-
インターネットに公開するのもローカルで公開するのも、リポジトリの置き場・アクセス以外に違いはない
-
「コミット権」
-
不適切な名前
- Gitの機能ではない
- SSHとかの機能
-
-
-
ストレージ節約
- bareリポジトリをcloneするときに
--reference repository
,--local
,--shared
オプション使用
- bareリポジトリをcloneするときに
- 【補】
--reference
オプション
git clone --reference /path/to/repo_first https://example.com/repo.git repo_second
- ローカルのrepo_firstリポジトリからオブジェクト取得、なければリモートリポジトリから取得
-
【補】
--local
オプション- オブジェクトストアで可能な場合ハードリンク使用
- デフォルト有効らしい
git clone .emacs.d/ .emacs.d.2
Cloning into '.emacs.d.2'...
done.
ls -i .emacs.d/.git/objects/2f/be680db91ba72d1d3c6e999e083515912e19d9
ls -i .emacs.d.2/.git/objects/2f/be680db91ba72d1d3c6e999e083515912e19d9
- inode等しい
604311 .emacs.d/.git/objects/2f/be680db91ba72d1d3c6e999e083515912e19d9
604311 .emacs.d.2/.git/objects/2f/be680db91ba72d1d3c6e999e083515912e19d9
-
【補】
--no-local
オプション- ハードリンクしない
-
【補】
--shared
オプション- ハードリンク以外の方法でオブジェクトストア共有
- share先 = clone元のリポジトリを削除すると死ぬ
git clone --shared .emacs.d/ .emacs.d.4
cat .emacs.d.4/.git/objects/info/alternates
/home/wand/.emacs.d//.git/objects
- いずれの方法にしても、bareリポジトリ強く推奨
Repositories with Controlled Access
-
単一マシン
- UnixローカルFSのr/wパーミッションでいい
- NFSも可
-
複数マシン
- 例: ストレージ冗長化されているサーバに正式なリポジトリを置く場合など
- NFS等による直接のFSアクセスが利用不可能な場合?
-
SSH使う
- 認証が求められる
-
アクセスのスコープは様々
- 開発グループ全体
- 社内全体
- インターネット全体
英語
-
breach
-
不履行
- セキュリティなどの
-