Kann ich eine Datei in git schreibgeschützt machen?

9

Ich schreibe eine iOS-App, die ein versioniertes Core Data-Modell verwendet.
Ich habe gerade eine Version der App veröffentlicht, die beim Upgrade abgestürzt ist, weil ich versehentlich die alte Version bearbeitet und eine neue Version erstellt habe.

Um dies erneut zu verhindern, möchte ich die alten Versionen so kennzeichnen, dass ein Einchecken verhindert wird, bei dem diese Dateien geändert werden, ohne dass zuvor die Markierung entfernt wird.

Um die Dinge komplizierter zu machen, verwende ich git-svn, so dass ein schreibgeschütztes Repo als Submodul nicht funktioniert.

    
Simon 28.05.2013, 14:57
quelle

4 Antworten

2

Grundsätzlich können Sie nicht.
Git wird Änderungen mit chmod verfolgen, wenn Sie das Flag nicht deaktiviert haben.

Sie können eine Umgehung dafür verwenden.

  • Git Haken

    Bestätigen Sie in Ihrem lokalen & amp; Server hooks, dass die gewünschte Datei nicht Teil von diff ist, was bedeutet, dass sie nicht geändert wurde.

    Warum in beiden?

    Da lokale Hooks vom Benutzer entfernt werden können, möchten Sie es auf dem Server überprüfen. kann in den pre-receive or update hooks gemacht werden.

  • Nur lesbares Submodul

    Legen Sie die Datei in ein separates Repository und verwenden Sie sie als Submodul. Dieses Repository wird für alle Benutzer schreibgeschützt sein, mit Ausnahme derer, zu denen Sie schreiben dürfen.
    Ich weiß nicht, was ist dein Git-Server, aber die meisten Server unterstützen nur Lesen oder Sperren zu einem bestimmten Zweig.
  • git update-index --assume-unchanged

    Es lässt Git jede Überprüfung auslassen und davon ausgehen, dass es sich nicht geändert hat. Wenn Sie Änderungen an den Arbeitsbaumdateien vornehmen, müssen Sie Git explizit darüber informieren, indem Sie das Bit "Angenommen, unverändert" abbrechen, entweder vor oder nach dem Ändern.

Dadurch werden lokale Änderungen an dieser Datei "ignoriert".

    
CodeWizard 25.11.2015 01:38
quelle
0

Initialisieren Sie einen neuen Repo mit schreibgeschütztem Zugriff und fügen Sie ihn als Submodul

hinzu     
dimid 11.09.2015 14:51
quelle
0

Haben Sie überlegt, Ihre Versionen zu markieren? Tags sind wie schreibgeschützte Zweige. Sie können den Tag-Zeiger auf einen anderen Zweig verschieben, aber Sie müssen die Option force (-f) verwenden, damit Sie zumindest darüber nachdenken müssen, was Sie tun. Sie werden es nicht zufällig tun. Hier ist eine gute Referenz auf Git-Tagging: Ссылка

    
socketwiz 25.11.2015 01:34
quelle
-2

Was ist mit chmod 400 /path/to/file ?

    
Vash2593 28.05.2013 15:13
quelle

Tags und Links