|
|
|
|
|
|
|
|
|
Die bessere Lösung ist allerdings,das geb ich zu, das mit Merge zu machen. Woran hat es denn da gescheitert? Die Befehle hatte ich dir doch oben rausgesucht.
– Scout 16.09.2009
|
|
|
|
Brr, das ist kein Merge, sondern ein „wir schmeißen einfach eine Version weg“, was bei paralleler Entwicklung (siehe Frage) eine verdammt dumme Idee ist.
– Bombe 15.09.2009
|
||
|
@Bombe: Genau das ist es eben nicht, weil SVN erkennt, dass es ein Merge machen muß anstatt ein Commit. Sonst könnten ja nie mehrere Entwickler an einem Projekt gleichzeitig arbeiten.
– Scout 15.09.2009
|
||
|
Du kopierst ein Verzeichnis über ein anderes. Wo findet denn da bitte ein Merge statt? Kann cp mittlerweile mergen? Ist mir was entgangen? Kann cp vielleicht auch den Welthunger besiegen?
– Bombe 15.09.2009
|
||
|
Die Dateien werden dann so behandelt, als wenn du sehr lange dran Änderungen vorgenommen hast. (Da ist absolut kein Unterschied!) und ob ich nun händig drin rumschreibe oder drüber kopiere ist svn völlig egal.
– Scout 15.09.2009
|
||
|
Du änderst also in coTrunk beliebige Dateien, schmeißt Metainformationen aus coBranch weg, und svn commit kann daraus immer noch einen Merge generieren? Verstehe ich das richtig?
– Bombe 15.09.2009
|
||
|
Richtig! "svn merge" versucht dann aus deinen geänderten Daten und der eingecheckten Version eine komplette neue Version zu machen - verbindet also beide Versionen miteinander. Sollte SVN dies zu kompliziert sein (weil zu gravierende Unterschiede) dann wird wird ein Konflikt ausgelöst. Diesen muß man zwar händig dann lösen, aber ist verständlich. Kleinere Änderungen werden jedoch vom SVN automatisch zusammen gebracht.
– Scout 15.09.2009
|
||
|
ups meinete im vorhergehenden Kommentar natürlich "svn commit" und nicht "svn merge" :(
– Scout 15.09.2009
|
||
|
Wenn du jegliche Metainformationen von coBranch verwirfst, woher weiß svn commit, dass es einen Merge machen soll? Und wieso ist es ein Merge, wenn du eine Version (nämlich coTrunk) gnadenlos überschreibst? Ich fürchte, dir sind da einige Begrifflichkeiten nicht ganz klar…
– Bombe 15.09.2009
|
||
|
Zumindest theoretisch kann ich den Ansatz von Scout verstehen. Eine Lösung, die die gesamte SVN-Logik umgeht, aber immerhin.
Habs praktisch ausprobiert, mit dem Ergebnis, dass unter Eclipse die Versionsinfo der Dateien interessanterweise mitkopiert wurde und es deshalb "Future Versions" gibt, die nicht in den Trunk commited werden können. Hab beim Überschreiben sowohl alle Verzeichnisse, als auch nur den src-Ordner ausprobiert, das Ergebnis ist das gleiche. – LastFreeNickname 15.09.2009
|
||
|
@Bombe: Ich arbeite jeden Tag beruflich mit svn und ich weiß wie es programmiert ist und wie es funktioniert. Die Metainformationen geben ja lediglich an, woher svn die Dateien ausgecheckt hat. Da wir die Daten aber ehh nicht in den Branch Zweig wieder einchecken wollen, brauchen wir diese auch nicht. Einzig und allein die Metainfos von coTrunk brauchen wir zum Commit von coTrunk, coBranch bleibt völlig unangetastet im SVN. Es werden lediglich die Daten-Dateien überschrieben - so als ob die Daten von Hand geändert wurden.
– Scout 15.09.2009
|
||
|
EDIT: Hab beim Überschreiben sowohl alle Verzeichnisse *außer .svn*, als auch nur den src-Ordner ausprobiert, das Ergebnis ist das gleiche.
– LastFreeNickname 15.09.2009
|
||
|
@Scout, genau. Was dir dabei völlig verloren geht, ist die Information, dass dieser Commit ein Merge ist. Außerdem verlierst du sämtliche Änderungen, die in coTrunk, aber nicht in coBranch, gemacht wurden (außer in in coTrunk neu angelegten Dateien), und ich wiederhol’s nochmal: Das ist bei paralleler Entwicklung in coTrunk und coBranch einfach völlig daneben.
– Bombe 15.09.2009
|
||
|
@Bombe: Es ist richtig, dass man die Information verleirt, dass das Commit ein Merge ist. Aber man verliert nicht alle Änderungen aus coTrunk. Dieses hat man ja ausgecheckt und mit coBranch überschrieben und mit dem Commit (eigentlich Merge) dann zusammengeführt.
– Scout 15.09.2009
|
||
|
@Scout, also, wird coTrunk jetzt überschrieben, oder irgendwie doch nicht? Du ergibst immer weniger Sinn. Wenn ich eine Datei überschreibe (von coBranch nach coTrunk KOPIERE), ist das, was vorher drin war, WEG. Da wird exakt NICHTS gemerget. Ich verstehe nicht, was es da nicht zu verstehen gibt. Ein anschließendes „svn commit“ macht aus einem KOPIEREN noch lange kein MERGEN.
– Bombe 15.09.2009
|
||
|
@Bombe: Das behauptet ja auch keiner, dass aus dem Kopieren ein Mergen wird, es erspart nur Tipparbeit! Ob ich nun händisch in coTrunk die Daten ändere oder die Daten von coBranch rüberkopiere macht keinen Unterschied. Es geht nur darum, dass die Metadaten von coTrunk zum checkin genutzt werden können, mit dem geänderten Source-Code aus coBranch. Jetzt ein Commit von coTrunk bewirkt, dass die Daten mit dem Datenbestand im SVN GEMERGET werden, denn die Daten im SVN sind ja bisher unverändert. Hoffe das war jetzt verständlich. ;)
– Scout 15.09.2009
|
||
|
Also ist „Datei auschecken, ändern, einchecken“ jetzt auf einmal auch ein Merge? Das würde einiges erklären; in dem Falle wäre meine Definition von „Merge“ wohl falsch.
– Bombe 16.09.2009
|
||
|
Nicht in jedem Fall! Nur wenn du auscheckst, deine Dateien änderst, in der zwischenzeit sich der Stammbaum geändert hat und du deine Arbeitskopie wieder einchecken willst... in diesem Fall wirst du sehen, dass Commit ein Merge macht ;) ...zumindest schreibt svn da bei mir hin ...file xyz merged.
– Scout 16.09.2009
|