勉強日記

チラ裏

Git ch13 Repository Management (1/x)

shop.oreilly.com


Repository Magagement

  • リポジトリ集中型/分散型
  • 開発モデルとは直交
    • Gitを用いた開発モデルはあくまで分散型
    • リポジトリ集中型でも、個々の開発者は手元にcloneして作業する = 分散型開発モデル

A Word About Servers

  • 「サーバー」という言葉はゆるく色々な意味で使われがち
  • Git的にはどういう意味?
  • Gitでは、他の多くのVCSとは異なり、中央サーバは必要ない
    • Gitのプロトコル上、特別なサーバーというものは存在しない
  • Gitの「サーバー」は何をするの
    • 更新をやりとりする固定的な場所の提供
    • 認可、アクセス制御
  • サーバラックに入っててマシンパワーのあるやつ

Publishing Repositories

  • インターネットに公開するのもローカルで公開するのも、リポジトリの置き場・アクセス以外に違いはない
    • 「コミット権」
      • 不適切な名前
        • Gitの機能ではない
        • SSHとかの機能
  • ストレージ節約
    • bareリポジトリをcloneするときに--reference repository, --local, --sharedオプション使用
  • 【補】--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

Repositories with Controlled Access

  • 単一マシン
  • 複数マシン
    • 例: ストレージ冗長化されているサーバに正式なリポジトリを置く場合など
    • NFS等による直接のFSアクセスが利用不可能な場合?
    • SSH使う
      • 認証が求められる
      • アクセスのスコープは様々
        • 開発グループ全体
        • 社内全体
        • インターネット全体

英語

  • breach
    • 不履行
      • セキュリティなどの