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.
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.
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.
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.
git update-index --assume-unchanged
Dadurch werden lokale Änderungen an dieser Datei "ignoriert".
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: Ссылка