9

バージョン管理された Core Data モデルを使用する iOS アプリを作成しています。古い
バージョンを 誤って編集し、新しいバージョンを作成したため、アップグレード時にクラッシュしたアプリのバージョンをほぼリリースしました。

これが再び発生するのを防ぐために、最初にフラグを削除せずにそれらのファイルを変更するチェックインを防止する方法で古いバージョンにフラグを付けたいと思います。

さらに複雑にするために、私は git-svn を使用しているため、サブモジュールとして読み取り専用リポジトリを使用しても機能しません。

4

4 に答える 4

3

基本的にはできません。フラグをオフにしなかった場合、
Git は行われた変更を追跡します。chmod

これを行うには、いくつかの回避策を使用できます。

  • Git フック

    ローカル フックとサーバー フックの両方で、目的のファイルが の一部ではないことを確認します。これは、ファイルがdiff変更されていないことを意味します。

    なぜ両方で?

    ローカルフックはユーザーが削除できるため、サーバーで確認する必要があります。pre-receive or updateフックで行うことができます。


  • 読み取り専用サブモジュール

    ファイルを別のリポジトリに配置し、サブモジュールとして使用します。このリポジトリは、書き込みを許可したユーザーを除くすべてのユーザーに対して読み取り専用になります。
    あなたのgitサーバーが何であるかはわかりませんが、ほとんどのサーバーは読み取り専用または特定のブランチへのロックをサポートしています。

  • git update-index --assume-unchanged

    これにより、Git はチェックを省略し、変更されていないと見なします。作業ツリー ファイルに変更を加える場合は、変更前または変更後に、「変更されていないと仮定する」ビットを削除して、明示的に Git に通知する必要があります。

これにより、このファイルに加えられたローカルの変更はすべて「無視」されます。

于 2015-11-25T01:38:26.830 に答える
0

バージョンにタグを付けることを検討しましたか? タグは読み取り専用ブランチのようなものです。タグ ポインターを別のブランチに移動することはできますが、強制 (-f) オプションを使用する必要があるため、少なくとも自分が何をしているのかを考える必要があります。偶然に実行することはありません。git のタグ付けに関する参考資料は次のとおりです: https://git-scm.com/book/en/v2/Git-Basics-Tagging

于 2015-11-25T01:34:53.357 に答える
-2

どうchmod 400 /path/to/fileですか?

于 2013-05-28T15:13:09.150 に答える