2017-12-27 41 views
1

Wir arbeiten an einem Projekt, dann kommt plötzlich ein unkooperativer/sturer Bursche herein und checkt etwas ein, was das Projekt durcheinander gebracht hat - es ist nicht mehr baubar, hat aber keinen Einfluss auf meine Module. Also arbeiten wir immer noch mit der letzten bekannten Arbeitsrevision und ich habe meine Änderungen wie gewohnt eingecheckt. Dann beschloss der Projektmanager, alles auf die letzte bekannte Arbeitsrevision zurückzusetzen (r1810) und es wurde r1824.Wie kann man Änderungen von einer bestimmten Revision in die Arbeits-/Kopfrevision kopieren/erneut anwenden?

Nun, wie kann ich meine Revisionen von 1814, 1815 und 1821 erneut anwenden?

Ich benutze Tortoise SVN auf Windows Explorer und AnkhSVN auf Visual Studio die meiste Zeit, so kann ich sagen, dass ich immer noch ein Neuling in der Eingabeaufforderung während der Arbeit an SVN bin.

Antwort

4

Sie müssen diese Änderungen "herauspicken".

Um the manual zu zitieren:

< ...> der Begriff Rosinen herauszupicken. Dieses Wort bezieht sich auf den Vorgang, ein bestimmtes Änderungsset aus einem Zweig auszuwählen und es in ein anderes zu replizieren. Cherrypicking kann sich auch auf die Handlung beziehen, einen bestimmten Satz von (nicht notwendigerweise zusammenhängenden!) Änderungssätzen von einem Zweig zu anderen zu duplizieren. Dies steht im Gegensatz zu typischen Zusammenführungsszenarien, bei denen der "nächste" zusammenhängenden Bereich von Revisionen automatisch dupliziert wird.

Um Kirschen zu pflücken, verwenden Sie svn merge -c 1814 ^whatever/branch; wieder zu zitieren the manual:

--change (-c) ARG

die angeforderte Operation Führen Sie einen bestimmten „change“ verwenden. Im Allgemeinen ist diese Option syntaktischer Zucker für -r ARG-1:ARG. Einige Unterbefehle erlauben eine durch Kommas getrennte Liste von Versionsnummern (z. B. -c ARG1,ARG2,ARG3). Alternativ können Sie zwei durch einen Bindestrich getrennte Argumente (wie in -c ARG1-ARG2) bis angeben, den Bereich der Revisionen zwischen ARG1 und ARG2, inklusive. Schließlich, wenn das Revisionsargument negiert ist, ist die implizierte Revision Bereich umgekehrt: -c -45 entspricht -r 45:44.

Update: wie vom OP sugested, sie benötigt, um die --ignore-ancestry Befehlszeilenoption zu svn merge -c zu verwenden, da sie mit dem einzigen Zweig für die Entwicklung sind.

+0

Danke, immer noch zögerlich, die Eingabeaufforderung zu verwenden, weil ich das Projekt auch vermasseln könnte, also fand ich einen Weg, es auf TortoiseSVN zu tun. Da wir nur an einem Zweig arbeiten, muss ich die Option --ignore-ahntry hinzufügen. – eSPiYa

+0

@eSPiYa Ich wollte eigentlich nicht vorschlagen, die Kommandozeile zu benutzen (obwohl ich das lieber mache) - wir sollten nur eine gemeinsame Basis haben, wenn wir über diese Dinge sprechen; Für VC-Tools ist ihre Befehlszeilenschnittstelle normalerweise diese gemeinsame Grundlage. Es sollte relativ einfach sein, seine Ansätze auf Tools höherer Ebene abzubilden, während das Gegenteil normalerweise schwieriger ist (und die Tools unterscheiden sich). – kostix

Verwandte Themen