ローカルでコミットするには、なぜikiwikiに3つのgitリポジトリが必要なのですか?

ローカルでコミットするには、なぜikiwikiに3つのgitリポジトリが必要なのですか?

ローカルがある場合iQiWiki私のラップトップには、「repository」ディレクトリ(mywiki.gitデフォルトリポジトリ)、「scrdir」(myikigitリポジトリ)、および生成されたhtmlファイルがある場所(「destdir」)が必要です。ローカルWebブラウザで正しく実行されます。

ただし、コマンドラインでテキストエディタとgitを使用するには、3番目のgitリポジトリmywiki.local(「作業レプリカ」)を設定する必要があります。次の図に示すように、scrdirにプッシュしてhtmlページを再構築するフックをmywiki.gitトリガーするプッシュされる項目は次のとおりです。post-update

作業プロセス

このアプローチでは、サムWikiを実行するために私のラップトップのディレクトリとほぼ同じディレクトリです。つまり、ディスク容量を一度ではなく3倍にします。

その理由は何ですか?

1台のコンピュータでのみ作業している場合は、これを防ぐための安全な方法はありますか? 2つ以上の1つのディレクトリに減らす方法はありますか?

ベストアンサー1

あまりにも多いようです。 1つのGitリポジトリのみを処理できます。それはすべてインフラストラクチャの機能に依存しますikiwiki(私はそれについて全く知りません)。

なぜ

リポジトリをベアリポジトリに設定したいのは、ベアリポジトリではなくリポジトリにはほぼ常にブランチがチェックアウトされているためです。他のgitリポジトリは、ターゲットリポジトリからチェックアウトされたブランチへのコミットを許可しません(ブランチで作業し、プッシュがコンピュータで発生し、ファイルが鼻の下で変更されると想像してください)。

srcdir「ストア」を複製する代わりに、「ストア」で作業することもできます。 Web 編集と同時にファイルを変更できますが、これによりリソース競合が発生する可能性があります。また、手動で押すと汚れが発生し、押しが発生しますikiwiki.cgiikiwikiスライドして実行したくないフックを入れることもできます。だから彼らは「ストア」から複製することをお勧めします。

Gitの特徴

ローカルマシンでgitリポジトリを複製すると、gitは重要な最適化を行います。このオプションを使用すると--local(使用する場合はデフォルトgit clone /path/to/repo)、共有する共通履歴へのハードリンクが使用されるため、ディスク容量が節約されます。以下は抜粋ですgit help clone

   --local, -l
       When the repository to clone from is on a local machine,
       this flag bypasses the normal "Git aware" transport
       mechanism and clones the repository by making a copy of
       HEAD and everything under objects and refs directories.
       The files under .git/objects/ directory are hardlinked to
       save space when possible.

追加のディスク容量は.git/objectsディレクトリではなくチェックアウト自体にあります。これがまだあまりにも負担が多い場合は、別のソリューションに進むことをお勧めします。

結論として

内部の仕組みについてあまり知らない限りikiwiki、推奨される設定方法をバイパスしようとしません。私はこれが安全ではないと思います。より良い回答が必要な場合は、より多くの知識を持つより良いフォーラムにアクセスできますikiwiki

gitが内部のgitオブジェクトファイルへのハードリンクを実行していることがわかると、使用される追加のディスク容量は問題になりません。

おすすめ記事