Git ch13 Repository Management (1/x)

Git勉強メモ

出典: 


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
  • いずれの方法にしても、bareリポジトリ強く推奨

Repositories with Controlled Access

  • 単一マシン

    • UnixローカルFSのr/wパーミッションでいい
    • NFSも可
  • 複数マシン

    • 例: ストレージ冗長化されているサーバに正式なリポジトリを置く場合など
    • NFS等による直接のFSアクセスが利用不可能な場合?
    • SSH使う

      • 認証が求められる
      • アクセスのスコープは様々

        • 開発グループ全体
        • 社内全体
        • インターネット全体

英語

  • breach

    • 不履行

      • セキュリティなどの