Hallo Leute!
Heute habe ich festgestellt, dass ein Kollege entschieden hat (ohne den anderen was zu sagen), dass einige Branches in vielen Projekten in unserem SVN-Server "alter Schrott enthalten, und deswegen vernichtet werden müssen". Dieser "alte Schrott" waren nur die vorige Versionen des Programms... :(
Jetzt ist es gemacht und bestimmt kann man nichts mehr wiedererstellen (wenn ich mich irre, bitte sagen, wie es geht).
Ich will aber versuchen zu vermeiden, dass in die Zukunft der Kollege wieder andere Projekten vernichtet, weil er meint, sie sind veraltet.
Nun die Frage: wie kann ich in SVN verhindert, dass Branches gelöscht werden?
Ich kann nicht pauschal sagen, dass Dateien oder Directories nicht gelöscht werden dürfen, denn der Fall kann tatsächlich passieren. Aber die Branches dürfen bestimmt NICHT gelöscht werden...
Danke für eure Hilfe! Luca Bertoncello (lucabert@lucabert.de)
Hallo Luca,
in SVN geht nichts verloren, Du kannst die gelöschten Revisionen wieder auschecken bzw. das Löschen rückgängig machen. svn revert sollte hier helfen.
http://svnbook.red-bean.com/de/1.6/svn-book.html
Viele Grüße, André
Am 30.06.2014 um 19:02 schrieb André Schulze:
Hallo Luca,
in SVN geht nichts verloren, Du kannst die gelöschten Revisionen wieder auschecken bzw. das Löschen rückgängig machen. svn revert sollte hier helfen.
Alternativ/zusätzlich dem Kollegen noch Bescheid geben, dass es suboptimal war ;)
Gruß Frank
Frank Lanitz frank@frank.uvena.de schrieb:
Am 30.06.2014 um 19:02 schrieb André Schulze:
Hallo Luca,
in SVN geht nichts verloren, Du kannst die gelöschten Revisionen wieder auschecken bzw. das Löschen rückgängig machen. svn revert sollte hier helfen.
Alternativ/zusätzlich dem Kollegen noch Bescheid geben, dass es suboptimal war ;)
DAS ist genau die falsche Lösung...
Ich habe heute 'ne halbe Stunde mit dem <BEEEEEEP> gesprochen und gesagt, dass es falsch war, denn SVN ist (auch) deswegen da, die ganze Geschichte der Projekten zu speichern.
Er meint, dass "das alter Scheiß ist", und "einmal dass wir eine neue Version des Programms haben, brauchen wir die alten nicht mehr".
Am Ende musste ich sein Zimmer verlassen oder das Risiko tragen, dass ich die deutsche Gefängnisse von innen mehreren Jahrzehnten sehe, weil ich jemandem getötet habe und seinem Leichen vergewaltigt...
Grüße Luca Bertoncello (lucabert@lucabert.de)
Am 30.06.2014 um 19:12 schrieb Luca Bertoncello:
Frank Lanitz frank@frank.uvena.de schrieb:
Am 30.06.2014 um 19:02 schrieb André Schulze:
Hallo Luca,
in SVN geht nichts verloren, Du kannst die gelöschten Revisionen wieder auschecken bzw. das Löschen rückgängig machen. svn revert sollte hier helfen.
Alternativ/zusätzlich dem Kollegen noch Bescheid geben, dass es suboptimal war ;)
DAS ist genau die falsche Lösung...
Ich habe heute 'ne halbe Stunde mit dem <BEEEEEEP> gesprochen und gesagt, dass es falsch war, denn SVN ist (auch) deswegen da, die ganze Geschichte der Projekten zu speichern.
Er meint, dass "das alter Scheiß ist", und "einmal dass wir eine neue Version des Programms haben, brauchen wir die alten nicht mehr".
Am Ende musste ich sein Zimmer verlassen oder das Risiko tragen, dass ich die deutsche Gefängnisse von innen mehreren Jahrzehnten sehe, weil ich jemandem getötet habe und seinem Leichen vergewaltigt...
Naja ... ich wollte nur sagen, dass man soziale Probleme mit Technik so lange bewerfen kann, wie man möchte, der Kaffee wird davon nicht stärker ... oder so ähnlich ;)
Fakt ist: Ein Branch der nicht mehr gebraucht wird, kann weg. Dank svn geht das auch ohne größere Probleme, da ja die alten Versionen noch im repo liegen -- bei CVS ist das IIRC nicht möglich. Das Löschen ist durchaus auch sinnvoll, da sonst müllt nur die Arbeitskopie voll -- ich denke mal, ihr checkt den kompletten svn-Baum aus und nicht nur trunk oder einzelne Branches. Und wenn man dann z.B. eine Eclipse mit den Fähigkeiten drauf lässt, geht das auch in CPU und RAM. Kann also den Kollegen einen Stück weit schon verstehen. Aber die Lösung sollte in der Mitte irgendwo liegen vermute ich.... ohne Eure genauen Beziehungen zu kennen ;)
Gruß Frank
Frank Lanitz frank@frank.uvena.de schrieb:
Fakt ist: Ein Branch der nicht mehr gebraucht wird, kann weg. Dank svn
Na, rate mal? Ich brauchte genau heute diese Daten... Deswegen habe ich gesehen, dass sie weg waren...
geht das auch ohne größere Probleme, da ja die alten Versionen noch im repo liegen -- bei CVS ist das IIRC nicht möglich. Das Löschen ist durchaus auch sinnvoll, da sonst müllt nur die Arbeitskopie voll -- ich
Nein, man holt nur eine bestimmte Branch vom Server und arbeitet damit. Dann wird eventuell ein Merge gemacht.
Grüße Luca Bertoncello (lucabert@lucabert.de)
Hallo,
falls Ihr auch mit Windows arbeitet, gibt es mit TortoiseSVN einen hervorragenden Client, der Dir z.B. mittels des Revisionsgraphen grafisch dabei hilft, die richtige Revision Deines branches zu finden.
Viele Grüße, André
André Schulze andre.schulze@gmail.com schrieb:
Hallo,
falls Ihr auch mit Windows arbeitet, gibt es mit TortoiseSVN einen hervorragenden Client, der Dir z.B. mittels des Revisionsgraphen grafisch dabei hilft, die richtige Revision Deines branches zu finden.
Der Kollege, der diese Branches "gelöscht" hat, nutzt tatsächlich Windows mit TortoiseSVN. Ich mit Linux nutze Eclipse und Kommandozeile... :)
Grüße Luca Bertoncello (lucabert@lucabert.de)
On Monday 30 June 2014 19:25:37 Frank Lanitz wrote:
Naja ... ich wollte nur sagen, dass man soziale Probleme mit Technik so lange bewerfen kann, wie man möchte, der Kaffee wird davon nicht stärker ... oder so ähnlich ;)
Amerikanisch: When you finally make it fool-proof, nature invents a better fool!
Fakt ist: Ein Branch der nicht mehr gebraucht wird, kann weg.
Der Trick ist die Definition von "nicht mehr gebraucht"...
Was eine Sackgasse in der Entwicklung war, die nie irgendwohin freigegeben wurde, dann kann es durchaus weg. Alles was jemals an einen Kunden gelangt ist bleibt bitte da. Irgendwann wird Dich ein kleiner dummer Bug beißen und Du brauchst es ganz dringend.
Dank svn geht das auch ohne größere Probleme, da ja die alten Versionen noch im repo liegen -- bei CVS ist das IIRC nicht möglich. Das Löschen ist durchaus auch sinnvoll, da sonst müllt nur die Arbeitskopie voll -- ich denke mal, ihr checkt den kompletten svn-Baum aus und nicht nur trunk oder einzelne Branches.
Autsch. Wer macht denn sowas?
Wenn Du zwischen Versionen wechseln willst, dann kannst Du immer svn switch machen oder gleich mehrere Branches in unterschiedlichen Verzeichnissen unabhängig voneinander auschecken.
Und wenn man dann z.B. eine Eclipse mit den Fähigkeiten drauf lässt, geht das auch in CPU und RAM.
Genau deswegen macht man sowas nicht.
Kann also den Kollegen einen Stück weit schon verstehen. Aber die Lösung sollte in der Mitte irgendwo liegen vermute ich.... ohne Eure genauen Beziehungen zu kennen ;)
Mal ganz ehrlich - ich hätte den Kollegen beim Management angezählt.
Konrad
Konrad Rosenbaum konrad@silmor.de schrieb:
Amerikanisch: When you finally make it fool-proof, nature invents a better fool!
Das ist auch Italienisch genau so... Noch eins: "Die Mutter der Idioten ist immer schwanger"...
Fakt ist: Ein Branch der nicht mehr gebraucht wird, kann weg.
Der Trick ist die Definition von "nicht mehr gebraucht"...
Was eine Sackgasse in der Entwicklung war, die nie irgendwohin freigegeben wurde, dann kann es durchaus weg. Alles was jemals an einen Kunden gelangt ist bleibt bitte da. Irgendwann wird Dich ein kleiner dummer Bug beißen und Du brauchst es ganz dringend.
JAWOHL! Genau das ist die Sache! Alle diese Branches waren im Produktion!
Gut, ich werde morgen alle diese Tricks probieren und die Branches wieder zu erstellen.
Und bestimmt ihm (vor allen anderen IT-ler!) sagen, dass seine Aktion total sinnlos war, denn er wollte "Platz befreien", obwohl wir noch mehreren GB frei auf der Festplatte haben und er hat am Ende noch weitere Platz benutzt, denn SVN braucht Bytes, um diese Dateien als "gelöscht" zu markieren...
Also, sehr lustig: man will Platz sparen, und man braucht deswegen mehr Platz... Morgen werden wir bestimmt lachen (außer der Kollege, der das gemacht hat)...
Grüße Luca Bertoncello (lucabert@lucabert.de)
On Monday 30 June 2014 19:12:05 Luca Bertoncello wrote:
Frank Lanitz frank@frank.uvena.de schrieb:
Alternativ/zusätzlich dem Kollegen noch Bescheid geben, dass es suboptimal war ;)
DAS ist genau die falsche Lösung...
Ich habe heute 'ne halbe Stunde mit dem <BEEEEEEP> gesprochen und gesagt, dass es falsch war, denn SVN ist (auch) deswegen da, die ganze Geschichte der Projekten zu speichern.
Er meint, dass "das alter Scheiß ist", und "einmal dass wir eine neue Version des Programms haben, brauchen wir die alten nicht mehr".
Bitte Deinen Manager mit ihm zu reden - dazu sind Manager da.
Kompromissvorschlag: mach neben "trunk", "branches" und "tags" noch einen Ordner "trash", in den alte Branches und Tags verschoben werden. Damit bleibt es erhalten, aber der Baum ist "aufgeräumt". Löschen von Branches spart sowieso keinen Speicher. Den Vorschlag sollte aber eine Dritte Person machen...
Am Ende musste ich sein Zimmer verlassen oder das Risiko tragen, dass ich die deutsche Gefängnisse von innen mehreren Jahrzehnten sehe, weil ich jemandem getötet habe und seinem Leichen vergewaltigt...
Dazu gibt's Auftragskiller - im modernen Firmendeutsch auch "Projektmanager" genannt... ;-)
Konrad
Konrad Rosenbaum konrad@silmor.de schrieb:
Er meint, dass "das alter Scheiß ist", und "einmal dass wir eine neue Version des Programms haben, brauchen wir die alten nicht mehr".
Bitte Deinen Manager mit ihm zu reden - dazu sind Manager da.
Wir sind eine kleine Firma... Kein Manager... Aber der Chef ist ein Programmierer... Meinst du, dass es reicht?
Kompromissvorschlag: mach neben "trunk", "branches" und "tags" noch einen Ordner "trash", in den alte Branches und Tags verschoben werden. Damit bleibt es erhalten, aber der Baum ist "aufgeräumt". Löschen von Branches spart sowieso keinen Speicher. Den Vorschlag sollte aber eine Dritte Person machen...
Naja, am Ende waren nur 3 Branches: dev, prev und prod. Dazu ist eine neue gekommen. Wenn ich eine Branch "trash" anlegen, um dev, prev und prod zu verschieben, kann ich dann auch die so lassen...
Am Ende musste ich sein Zimmer verlassen oder das Risiko tragen, dass ich die deutsche Gefängnisse von innen mehreren Jahrzehnten sehe, weil ich jemandem getötet habe und seinem Leichen vergewaltigt...
Dazu gibt's Auftragskiller - im modernen Firmendeutsch auch "Projektmanager" genannt... ;-)
Mmmm... ich konnte eventuell einen brauchen. Kann ich es vor dir mir borgen? :)
Grüße Luca Bertoncello (lucabert@lucabert.de)
On Mon, June 30, 2014 21:05, Luca Bertoncello wrote:
Konrad Rosenbaum konrad@silmor.de schrieb:
Er meint, dass "das alter Scheiß ist", und "einmal dass wir eine neue Version des Programms haben, brauchen wir die alten nicht mehr".
Bitte Deinen Manager mit ihm zu reden - dazu sind Manager da.
Wir sind eine kleine Firma... Kein Manager... Aber der Chef ist ein Programmierer... Meinst du, dass es reicht?
Hauptsache es ist jemand, der ihm zumindest theoretisch mit echten Konsequenzen (z.B. einer Abmahnung) drohen kann.
Rechne aber damit, dass Kompromisse nötig sind...
Konrad
André Schulze andre.schulze@gmail.com schrieb:
Hallo Luca,
in SVN geht nichts verloren, Du kannst die gelöschten Revisionen wieder auschecken bzw. das Löschen rückgängig machen. svn revert sollte hier helfen.
Aha, das ist ja toll!
Du meinst, ich kann einfach das Projekt auschecken (samt alle Branches) und dann einfach:
svn revert dev
angeben, und kommt die Branch "dev" zurück? Ich kann leider nicht wissen, wann diese Branches gelöscht worden sind...
Grüße Luca Bertoncello (lucabert@lucabert.de)
Am 30.06.2014 um 19:07 schrieb Luca Bertoncello:
André Schulze andre.schulze@gmail.com schrieb:
Hallo Luca,
in SVN geht nichts verloren, Du kannst die gelöschten Revisionen wieder auschecken bzw. das Löschen rückgängig machen. svn revert sollte hier helfen.
Aha, das ist ja toll!
Du meinst, ich kann einfach das Projekt auschecken (samt alle Branches) und dann einfach:
svn revert dev
angeben, und kommt die Branch "dev" zurück? Ich kann leider nicht wissen, wann diese Branches gelöscht worden sind...
Nein... nicht ganz. Du brauchst eine Revisionsnummer, in der dass passiert ist. Die bekommst Du z.B. mit svn log.
Gruß Frank
Frank Lanitz frank@frank.uvena.de schrieb:
Nein... nicht ganz. Du brauchst eine Revisionsnummer, in der dass passiert ist. Die bekommst Du z.B. mit svn log.
Mmmm...
Ich habe jetzt schnell probiert. Ich habe das Projekt ausgecheckt und sehe zwei Branches. Zwei fehlen noch (dev und prod). Ein svn revert dev bringt gar nicht. Mit svn log sehen ich, dass wahrscheinlich die Branch in der Revision X gelöscht worden ist.
Wie soll ich denn jetzt das machen?
Danke Luca Bertoncello (lucabert@lucabert.de)
On Monday 30 June 2014 19:24:20 Luca Bertoncello wrote:
Frank Lanitz frank@frank.uvena.de schrieb:
Nein... nicht ganz. Du brauchst eine Revisionsnummer, in der dass passiert ist. Die bekommst Du z.B. mit svn log.
Mmmm...
Ich habe jetzt schnell probiert. Ich habe das Projekt ausgecheckt und sehe zwei Branches. Zwei fehlen noch (dev und prod). Ein svn revert dev bringt gar nicht. Mit svn log sehen ich, dass wahrscheinlich die Branch in der Revision X gelöscht worden ist.
svn copy http://svnhost/svn/pfad/zu/geloescht@X-1 \ http://svnhost/svn/pfad/zu/geloescht -m "restore geloescht"
Wenn Revision X die 999 war, dann setz für X-1 die 998 ein - egal ob es da drin tatsächlich eine Änderung an "geloescht" gab - es ist der letzte Stand vor dem Löschen.
Alternativ ein Reverse-Merge: svn merge -r 999:998
Jedenfalls laut Stackoverflow: http://stackoverflow.com/questions/2265369/how-to-undelete-a-deleted-folder-...
Konrad
André Schulze schrieb:
in SVN geht nichts verloren, Du kannst die gelöschten Revisionen wieder auschecken bzw. das Löschen rückgängig machen. svn revert sollte hier helfen.
"svn revert" macht lokale Änderungen rückgängig. Der "Kollege" hätte also nach seinem "svn rm X" mittels "svn revert X" das Löschen rückgängig machen können. Hat er ja aber nicht, sondern dann kam ein "svn commit" :) Dem OP hilft der Befehl nicht weiter.
VG Daniel
Luca Bertoncello schrieb:
Heute habe ich festgestellt, dass ein Kollege entschieden hat (ohne den anderen was zu sagen), dass einige Branches in vielen Projekten in unserem SVN-Server "alter Schrott enthalten, und deswegen vernichtet werden müssen". Dieser "alte Schrott" waren nur die vorige Versionen des Programms... :(
Jetzt ist es gemacht und bestimmt kann man nichts mehr wiedererstellen (wenn ich mich irre, bitte sagen, wie es geht).
Du irrst dich :) Du kannst ganz einfach die Revision aus-checken, in der das Verzeichnis noch existiert hat. Würde als VCS ja sonst nicht viel Sinn machen, oder?
svn export|co -rX <pfad>
Und die Revision bekommst du mit "svn log --limit 5 <pfad>". Dann nimm quasi X=Revision-1.
Oder du machst einen Reverse-Merge wie Konrad Rosenbaum schrieb, wenn du das Verzeichnis in der Arbeitskopie wieder "herstellen" möchtest.
JFTR: Manchmal ist ein Aufräumen der Branches gar nichts schlechtes. Evtl. hilft es ja, die Lesbarkeit zu verbessern oder die Größe der Arbeitskopie zu verringern? Dann reicht vielleicht auch eine README mit dem obigen Hinweis, wie man die letzte Version des Branches dennoch aus-checken kann.
Nun die Frage: wie kann ich in SVN verhindert, dass Branches gelöscht werden?
Gar nicht und das brauchst du auch nicht, da du ja jederzeit wieder rankommst. Man kann eigentlich nur mit svnadmin etwas wirklich löschen. Wenn ihr aber alle nach Lust und Laune(???) auf Eurem SVN-Server löscht, wären vielleicht ein paar Absprachen angebracht?
PS: Du kannst temporär mit "svn lock" einen Pfad sperren. Den kann sich ein anderer Nutzer aber mit "svn lock --force" wohl zurückholen und du würdest effektiv die gemeinsame Arbeit an dem gesperrten Pfad behindern, da kein anderer Nutzer etwas verändern kann, solange deine Sperre besteht.
VG Daniel
lug-dd@mailman.schlittermann.de