Frage

In CVS, meine Arbeitskopie (WC) befindet sich auf einem bestimmten Zweig (die wir nennen wollen "foo"). Es wird weitere Änderungen in foo von einem anderen Entwickler überprüft. Ich mag ein diff zwischen meinem WC und dem vorgeschalteten Zustand von foo zu tun. Normalerweise, wenn im Kofferraum (HEAD) arbeiten, ich habe nur einen cvs diff, und das ist in Ordnung. Aber aus irgendeinem Grunde, wenn eine einfache cvs diff in der Branche zu tun, ist der Unterschied leer. Wenn ich versuche, „cvs diff -r foo“ zu verwenden, die diff zeigt, aber es wird umgekehrt -. Upstream-Additionen mit minusen gezeigt, und vor Umzügen sind mit Plus gezeigt

Wie kann ich entweder: (1) erhalten CVS "in die andere Richtung" (plus für die Upstream-Ergänzungen), oder (2) invertieren einen Patch (im Allgemeinen)

diff
War es hilfreich?

Lösung

Wenn der Hauptzweck dieser ist zu prüfen, „was los ist“ im zentralen Repo, schlage ich vor, Sie selbst erhalten ein funktionales CVS-Viewer / Browser / Web-Dingen, wo Sie blättern und die neuesten Änderungen sehen vor dem Update. Aber angenommen, alles, was Sie haben, ist Befehlszeilen CVS, ich werde versuchen, Ihnen eine Lösung trotzdem:)

Also, was Sie hier haben, ist ein Zweig foo, die von A ging -> B, wo B der Zustand der Branche (auf dem Server) ist nach dem Einchecken des anderen Entwicklers und A ist der Zustand, den Sie zuletzt Ihre Arbeits aktualisiert kopieren.

Wenn nur eine einfache cvs diff in dieser Situation zu tun, werden Sie Ihre lokalen Änderungen finden Sie unter im Vergleich zu A seit A ist, was Sie ausgecheckt haben. Der lokale CVS Zustand wird zeigen, dass jede Datei von der A-Revision auf dem foo Zweig kommt, und wenn Ihr CVS-Client diffing wird diese Revision vom Server herunterladen. In Ihrem Fall bin zu raten ich Ihnen keine lokalen Veränderungen haben seit Ihrem cvs diff leer ist.

Wenn Sie dann eine cvs diff -r foo tun sind Sie Ihre lokale A diffing (oder A + Änderungen) gegen die foo des Servers (das derzeit bei B ist) - und die erforderlichen Änderungen vom Server des B zu bekommen, um Ihre A+changes ist genau das Gegenteil der andere Entwickler Check-in, sowie die eigenen lokalen Änderungen.

Nun, wenn Sie wirklich, wirklich wissen wollen, wie B (oder Tip-of-foo) im Vergleich zu A (der ursprünglichen Version von was auch immer Sie sich gerade ausgecheckt haben), was ich denke, was Sie tun müssen gesetzt ist ein Tag auf Ihre Arbeitskopie, dann diff diesem Tag gegen den Staat der Branche. So etwas wie folgt aus:

cvs tag pistos_temp1
cvs diff -r pistos_temp1 -r foo
# And clean up by deleting the tag afterwards:
cvs tag -d pistos_temp1

Andere Tipps

vielleicht, was Sie wollen kann mit interdiff aus dem patchutils Paket erfolgen.

Ich benutze es oft diese Art und Weise zu sehen, was auf dem Stamm für eine bestimmte Datei geändert hat:

cvs diff -up -r1 givenfile | interdiff /dev/stdin /dev/null

Sie können versuchen, aus der Branche zu einem gewissen temporären Datei eine Datei exportieren und dann zwischen der Arbeitskopie und dieser temporären Datei diff machen. Es scheint der einfachste Weg zu sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top