1. ホーム
  2. linux

[解決済み] Git でファイルパーミッションを保持する

2022-09-21 14:10:44

質問

で説明されているように、自分のウェブサーバをバージョン管理したいのです。 私のウェブサーバのバージョン管理 で説明したように、ウェブサーバをバージョン管理したいのです。 /var/www directory . 私の希望は、開発サーバーから github に Web コンテンツをプッシュし、本番サーバーにそれをプルして、残りの時間をプールで過ごすことができるようになることでした。

どうやら私の計画におけるねじれは、Gitがファイルのパーミッションを尊重しないことです(私は試していません、今それについて読んでいるだけです)。これは、異なるボックスが異なるユーザー/グループ設定を持つ可能性があるという点では、理にかなっていると思います。 しかし、もし私が、私のサーバーが同じように構成されていることを知りながら、パーミッションを強制的に伝播させたい場合、何かオプションがあるのでしょうか?または、私がしようとしていることにアプローチする、より簡単な方法がありますか?

どのように解決するのですか?

この git-cache-meta SO質問&quotに記載されています。 git - gitが考えるファイルパーミッションを回復する方法は? "(そして git FAQ を参照してください)は、より直接的なアプローチです。

に格納することです。 .git_cache_meta ファイルにファイルやディレクトリのパーミッションを保存することです。

Git リポジトリで直接バージョン管理されていない別のファイルです。

そのため、それに対する使い方が

$ git bundle create mybundle.bdl master; git-cache-meta --store
$ scp mybundle.bdl .git_cache_meta machine2: 
#then on machine2:
$ git init; git pull mybundle.bdl master; git-cache-meta --apply

だから、あなた。

  • はあなたのレポを束ねる をバンドルし、関連するファイルのパーミッションを保存します。
  • リモートサーバーにこれら 2 つのファイルをコピーします。
  • レポをそこにリストアし、パーミッションを適用します。