it-swarm.com.de

So lösen Sie die "lokale Bearbeitung, eingehende Löschung beim Update"

Wenn ich einen svn status . mache, bekomme ich folgendes:

!     C auto-complete-config.elc
      >   local edit, incoming delete upon update
!  +  C auto-complete.elc
      >   local edit, incoming delete upon update
!  +  C popup.elc
      >   local edit, incoming delete upon update
!  +  C fuzzy.elc
      >   local edit, incoming delete upon update

grundsätzlich sollten sich diese Dateien nicht im Repository befinden. Ein Entwickler hat sie entfernt. Dann glaube ich, dass ich aus Versehen einen svn rm ... gemacht habe (hätte svn update . tun sollen).

Wenn ich also svn status . mache, erhalte ich diese Baumkonfliktmeldungen.

Ich fand das Dokument hier aber nicht sicher, wie es laut Dokument "zusammengeführt" werden soll.

Wie kann man sie loswerden?

Ich denke, meine Arbeitskopie stimmt mit dem Repository überein. Ich weiß nicht, warum diese Nachrichten angezeigt werden. Diese Dateien sollten entfernt werden und werden, soweit ich weiß, überall entfernt. Ich habe svn update . und svn revert . ausprobiert, bekomme aber immer noch diese Meldung, wenn ich svn status . tue.

283
Xah Lee

Kurze Version:

$ svn st
!  +  C foo
      >   local edit, incoming delete upon update
!  +  C bar
      >   local edit, incoming delete upon update
$ touch foo bar
$ svn revert foo bar
$ rm foo bar

Wenn es sich bei dem Konflikt um Verzeichnisse anstelle von Dateien handelt, ersetzen Sie touch durch mkdir und rm durch rm -r.


Hinweis: Dasselbe Verfahren funktioniert auch in der folgenden Situation:

$ svn st
!     C foo
      >   local delete, incoming delete upon update
!     C bar
      >   local delete, incoming delete upon update

Lange Version:

Dies geschieht, wenn Sie eine Datei bearbeiten, während jemand anderes die Datei gelöscht und zuerst festgeschrieben hat. Als guter svn-Bürger führen Sie vor einem Commit ein Update durch. Jetzt hast du einen Konflikt. Das Löschen der Datei ist das Richtige, um die Datei aus Ihrer Arbeitskopie zu löschen. Anstelle von Inhalt beklagt sich svn nun, dass die lokalen Dateien fehlen und dass es ein widersprüchliches Update gibt, das die Dateien letztendlich gelöscht sehen möchte. Gute Arbeit, Svn.

Sollte svn resolve aus irgendeinem Grund nicht funktionieren, können Sie Folgendes tun:

Ausgangssituation: Lokale Dateien fehlen, Update steht in Konflikt.

$ svn st
!  +  C foo
      >   local edit, incoming delete upon update
!  +  C bar
      >   local edit, incoming delete upon update

Erstellen Sie die in Konflikt stehenden Dateien erneut:

$ touch foo bar

Wenn es sich um einen Konflikt um Verzeichnisse handelt, ersetzen Sie touch durch mkdir.

Neue Situation: Lokale Dateien, die dem Repository hinzugefügt werden sollen (ja, svn, was immer Sie sagen), Aktualisierung weiterhin in Konflikt.

$ svn st
A  +  C foo
      >   local edit, incoming delete upon update
A  +  C bar
      >   local edit, incoming delete upon update

Stellen Sie die Dateien auf den Status um, den svn ihnen gefällt (dh gelöscht):

$ svn revert foo bar

Neue Situation: Lokale Dateien, die svn nicht kennen, Update stört nicht mehr.

$ svn st
?       foo
?       bar

Jetzt können wir die Dateien löschen:

$ rm foo bar

Wenn es sich um einen Konflikt um Verzeichnisse handelt, ersetzen Sie rm durch rm -r.

svn klagt nicht mehr:

$ svn st

Erledigt.

405
lesmana

Versuchen Sie, den Konflikt mit zu lösen

svn resolve --accept=working PATH
157
zellus

Ich habe gerade das gleiche Problem bekommen und das gefunden

$ svn revert foo bar

problem gelöst.

svn resolve hat bei mir nicht funktioniert:

$ svn st
!  +  C foo
      >   local edit, incoming delete upon update
!  +  C bar
      >   local edit, incoming delete upon update

$ svn resolve --accept working
svn: Try 'svn help' for more info
svn: Not enough arguments provided

$ svn resolve --accept working .

$ svn st
!  +  C foo
      >   local edit, incoming delete upon update
!  +  C bar
      >   local edit, incoming delete upon update

$ svn resolve --accept working foo
Resolved conflicted state of 'foo'

$ svn st
!  +    foo
!  +  C bar
      >   local edit, incoming delete upon update
19
sligocki

Wenn Sie im konfliktierten Verzeichnis keine Änderungen vorgenommen haben, können Sie auch rm -rf conflicts_in_here/ und dann svn up. Das hat zumindest für mich funktioniert.

2
Udo

Sie können erzwingen, Ihr lokales Verzeichnis in svn zurückzusetzen.

 svn revert -R your_local_path
0
Gordon Ma

Sie können also die gelöschte Datei einfach wiederherstellen, aber denken Sie daran: Wenn Sie an einem Projekttyp mit einer festgelegten Projektdatei (wie iOS) arbeiten, wird das Zurücksetzen der Datei Ihrer Systemordnerstruktur hinzugefügt, nicht jedoch Ihrer Projektdateistruktur. In diesem Fall können zusätzliche Schritte erforderlich sein

0
CWineland

Dieses Problem tritt häufig auf, wenn wir versuchen, merge einen anderen Zweig von einem falschen Verzeichnis zu ändern.

Ex:

Branch2\Branch1_SubDir$ svn merge -rStart:End Branch1
         ^^^^^^^^^^^^
   Merging at wrong location

Ein Konflikt, der bei seiner Ausführung ausgelöst wird, ist:

Tree conflict on 'Branch1_SubDir'
   > local missing or deleted or moved away, incoming dir edit upon merge

Wenn Sie q to quit resolution wählen, erhalten Sie den Status als:

 M      .
!     C Branch1_SubDir
      >   local missing or deleted or moved away, incoming dir edit upon merge
!     C Branch1_AnotherSubDir
      >   local missing or deleted or moved away, incoming dir edit upon merge

dies bedeutet eindeutig, dass die Zusammenführung Änderungen enthält, die sich auf Branch1_SubDir und Branch1_AnotherSubDir beziehen, und diese Ordner konnten nicht in Branch1_SubDir gefunden werden (offensichtlich kann ein Verzeichnis nicht in sich selbst sein).

So vermeiden Sie dieses Problem an erster Stelle:

Branch2$ svn merge -rStart:End Branch1
 ^^^^
Merging at root location

Das einfachste Update für dieses Problem, das für mich funktioniert hat:

svn revert -R .
0
Saurav Sahu