Forum: PC-Programmierung Versionsmanagement 2


von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Stefan B. schrieb:
> Falls jemand Interesse an Versionskontrollsystemen hat, kann ich dieses
> frei verfügbare Online Buch http://www.ericsink.com/vcbe/index.html
> empfehlen.

Ich habe mal die ersten paar Seiten gelesen und das vorher erwartete
bestätigte sich:
Ich sehe keine Lösung für den typischen kleinkriminellen
Hobbyprogrammierer, also Leute die:
1. nicht wissen, ob die erarbeitete (Teil-)Lösung sich bewähren wird
2. wenige KB Code schreiben
3. abundzu dran weiterarbeiten (und daher viel zwischenzeitlich
vergessen)
4. mehrere Handlungsstränge aus der Not heraus gebähren.


Wie manage ich damit ein Projekt, das in drei verschiedene Codes
zerfallen ist, weil die populistisch 'besser' sind, die dann aber nach
jeweils mehreren Subversionen wieder zusammengeführt werden sollen?
Bislang mache ich das mit primitiven ASCII-Dateien, in denen die
Änderungen reingeschrieben wurden inkl. Datum. Darafhin habe ich dann
mehrere mehroderweniger komplette Projekte auf dem PC. Von ZeitzuZeit
sortiere ich dann aus, führe zusammen durch Code kopieren, usw.

Nicht professionell, aber vermutlich arbeiten die allermeisten im
hardwareorientierten Bereich so. Daß man mit dieser Methodik ein Win12
nicht generieren kann, ist klar.

Die Sache wird dadurch etwas einfacher, daß es immer nur einen
Programmierer gibt.


Im Studium wurde topdown-Entwicklung propagiert. Das war mir schon
damals klar, daß das Blödsinn ist, denn in den allermeisten Projekten
ist überhaupt nicht klar, ob man die entstehenden Teilschritte überhaupt
sinnvoll aufgeteilt hat. Daher arbeiten sicherlich die meisten Leute in
diesem Bereich nach von unten = Teillösungen, die dann auch testbar
sind! nach_ _oben hin zum optionalen GUI. Für topdown müßte man extra
Testcases realisieren, die logischerweise rein virtuell sind und damit
enorm fehlerträchtig (abgesehen vom zeitlichen Aufwand Code fürs
Nirwarna zu kreieren). FORTH basiert ja als ganze Programmiersprache auf
diesem Ansatz.

Was sind eure Meinungen?


Daraufhin schrieben einzelne Teilnehmer:

Re: Versionsmanagement
Autor: A. B. (funky)
Datum: 26.06.2012 23:08

------------------------------------------------------------------------ 
--------

all das kannste damit ja genau so weitermachen wenn du unbedingt willst.
dann wird halt immer ein neuer branch erzeugt.

> 3.abundzu dran weiterarbeiten (und daher viel zwischenzeitlich
> vergessen)
da man sich den log der bisherigen änderungen anschauen kann, ist das
für vergessliche ideal.

die manuelle Arbeit des mergens wird nunmal immer bleiben...egal wie man
sein Projekt nun pflegt...mit einer Versionierung oder indem man Ordner
samt Files hin&her kopiert

Neuer Versionierungssysteme als SVN sollen das ja besser können, wobei
ich es noch nicht ausprobiert habe. Ich kann mir auch noch nicht
vorstellen, wie man sowas gross automatisieren soll. Wenn ich zwei
unterschiedliche Funktionen mit gleichem Namen habe, muss doch ein
Mensch draufschauen und sagen was übernommen werden soll?!



Autor: Abdul K. (ehydra)
Datum: 27.06.2012 02:09

------------------------------------------------------------------------ 
--------

Ich bin gespannt, ob sich in den letzten 15 Jahren eine verbesserte
Methodik breit machte. Ich kann mich erinnern, damals auf einmal eine
Validierung von größeren C-Projekten durchführen zu müssen (50KByte
Binärcode), weil die Auftraggeber das für irgendwelche Zulassungen
benötigten. Es war nicht mein Task die Software zu schreiben und zu
validieren :-)

Ich möchte natürlich nicht nur C-Fragmente, sondern z.B. auch
Schaltungen in LTspice so behandeln. Geht das auch? Wenn eine neue
Methodik, dann soll sie möglichst universell sein, wie z.B. das Datei-
und Ordner-System im Filesystem. Was man für alles mögliche benutzen
kann.

Vielleicht mache ich ja was grundlegend umständlich und bin nie auf eine
solidere Idee gestoßen?

Ich denke das obige Argument "da muß ja ein Mensch nochmals drüber
schauen und entscheiden, WAS nun übernommen wird und was nicht" bleibt?
Z.B. zwei Funktionen, die unterschiedliche Dinge tun, aber auf ein
zufällig gemeinsames Special Function-Register in einem Controller
zugreifen, um ihre Funktion zu realisieren.


Autor: Jürgen Liegner (jliegner)
Datum: 27.06.2012 07:49

------------------------------------------------------------------------ 
--------

Es ist wie immer. Es kommt darauf an was man von dem System erwartet.
Bei uns arbeiten ca. 10 Leute seit ca. 10-12 Jahren mit cvs. Dabei geht
es nur darum Änderungen an den gleichen Dateien von mehreren Leuten
automatisch abgeglichen zu kriegen. Das ganze andere Geraffel wie
verschiedene Entwicklungszweige u.s.w haben wir nie benutzt und werden
es auch nicht. Wenn ein Release freigegeben wird bleibt es auf dem Stand
stehen, wird kopiert für das nächste Release und neu eingecheckt. Mag
sein das die neueren Systeme viel mehr können, das muss dann aber auch
von allen sicher beherrscht werden. Das kostet auch Zeit und Geld.
Deshalb ist für mich manchmal weniger mehr. Auch wenn man privat auf
verschiedenen Rechnern was macht ist cvs für mich völlig ausreichend.



Abdul:
Das waren die Beiträge.


Mich würde nun trotzdem das ganze Thema sehr abstrakt interessieren. 
Welche Lösungen habt ihr erarbeitet, um eure Versionskontrolle eurer 
Arbeit zu organisieren?

: Verschoben durch Moderator
von Weingut P. (weinbauer)


Lesenswert?

Hab da n etwas schnoddriges System für mich entwickelt.

Mache einfach jeden Tag bevor ich am Projekt weiter arbeite ne Kopie des 
ganzen Projektordners und mich erst dann frisch ans Werk.
Wenn dann im Programmverhalten irgendwelche unerklärliche 
Verhaltensweisen auftauchen lass ich "Beyond Compare" drüber laufen, 
dann seh ich alle Veränderungen des Tages und kann den Fehler leichter 
eingrenzen.
Funktioniert auch wunderbar zwischen 2 lauffähigen Versionen des 
Programmcodes.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Abdul K. schrieb:
> Welche Lösungen habt ihr erarbeitet, um eure Versionskontrolle eurer
> Arbeit zu organisieren?

Ich nehme größtenteils mittlerweile SVN.  CVS hat doch hie und da ein
paar Ecken und Kanten, die bei SVN verschwunden sind.

Ja, manuell mergen geht nicht anders, wenn sich irgendwas weit
auseinander entwickelt hat.  Das Einzige, was dagegen hilft ist, Dinge
nicht zu weit auseinanderdriften zu lassen. ;-) Funktion foo() sollte
also nicht in einem Zweig was komplett anderes tun als im anderen,
sodass man beim späteren Merge manuell entscheiden muss, was die nun
gemeinsame Funktion foo() denn eigentlich tun soll.

git habe ich für mich verworfen, weil es sowas von "wir machen
vorsätzlich alles ganz anders als bisher" ist, dass mich das nervt.

Mercurial benutze ich teilweise, einerseits weil es Projekte gibt, die
sich dafür entschieden haben und an denen ich mitarbeite.  Wirklich
einfacher ist das Mergen bei Konflikten dort auch nicht.  (Wie auch?)
Zuweilen nehme ich Mercurial noch als "Overlay" über irgendwas
anderes, was bereits versioniert ist (bspw. mit SVN).  Ich habe dann
also eine SVN working copy (ausgecheckter Stand) da liegen, mache
darauf ein "hg init" und füge alle wesentlichen Dateien diesem so
entstandenen Mercurial-Repo zu.  Dann kann ich Änderungen im Mercurial
für mich selbst in "kleinen Häppchen" einchecken, kann bei
auftretenden Fehlern schnell ein Rollback machen usw. usf.  Wenn die
dergestalt gezimmerte größere Änderung dann in Sack und Tüten ist,
wird alles als ein einziger Commit ins SVN zurückgeschrieben.  (Die
25000 lokalen commit messages interessieren dann nicht mehr, dort ist
nur noch das "big picture" von Interesse).  Danach fliegt das
Mercurial-Repo mit rm -rf .hg wieder weg.

Letztlich habe ich aber immer irgendwo eine Stelle, die für ein
bestimmtes Projekt autoritativ ist.  Damit hat eine verteilte
Versionsverwaltung für mich nur sehr begrenzt Sinn.  (Ja, ich weiß,
andere werden jetzt protestieren. ;-)  Ein Backup des VCS-Repos
sollte natürlich existieren, aber es ist dafür ziemlich wurscht, ob
dieses Backup explizit (bspw. per svn dump) erzeugt worden ist oder
als Clone des autoritativen Repositories.

von Robert L. (lrlr)


Lesenswert?

ich versteh nur Bahnhof

aber:

ich verwende SVN tortoiseSVN

das funktioniert mit Server, oder auch lokal

beliebige viele  Branch ist auch kein problem

Merge ist eher "umständlich" mit + SVNMerge

wenn man es mal verstanden hat, kein Problem, und auch kein Aufwand

Projektgröße spielt da keine Rolle,



wer "neu" beginnt, sollte sich aber vermutlich eher bei GIT umschauen 
(da ist das Merge besser gelöst?!) kenn ich aber persönlich nicht



>Wie manage ich damit ein Projekt,

gar nicht, mir Projektmanagement hat das nix zu tun..

von Stefanie B. (sbs)


Lesenswert?

Jörg Wunsch schrieb:
> git habe ich für mich verworfen, weil es sowas von "wir machen
> vorsätzlich alles ganz anders als bisher" ist, dass mich das nervt.

git wurde nicht entwickelt um ein weiteres Versionskontrollsystem zu 
erfinden, sondern um Linux effizient zu weiterzuentwickeln.

> Mercurial benutze ich teilweise, einerseits weil es Projekte gibt, die
> sich dafür entschieden haben und an denen ich mitarbeite.  Wirklich
> einfacher ist das Mergen bei Konflikten dort auch nicht.  (Wie auch?)
> Zuweilen nehme ich Mercurial noch als "Overlay" über irgendwas
> anderes, was bereits versioniert ist (bspw. mit SVN).  Ich habe dann
> also eine SVN working copy (ausgecheckter Stand) da liegen, mache
> darauf ein "hg init" und füge alle wesentlichen Dateien diesem so
> entstandenen Mercurial-Repo zu.  Dann kann ich Änderungen im Mercurial
> für mich selbst in "kleinen Häppchen" einchecken, kann bei
> auftretenden Fehlern schnell ein Rollback machen usw. usf.  Wenn die
> dergestalt gezimmerte größere Änderung dann in Sack und Tüten ist,
> wird alles als ein einziger Commit ins SVN zurückgeschrieben.  (Die
> 25000 lokalen commit messages interessieren dann nicht mehr, dort ist
> nur noch das "big picture" von Interesse).  Danach fliegt das
> Mercurial-Repo mit rm -rf .hg wieder weg.

Genau diesen Workflow führe auch ich durch, nur dass ich git benutze.
git kann die eigene History umschreiben, sodass ich erst lokal alles 
kleinschrittig zusammenbasteln kann und dann bevor ich meine Änderungen 
publiziere kann ich die 10-100 commits in einen einzigen Commit, mit 
sinnvoller commit message umschreiben.

Da ich gezwungenermassen auch mit SVN arbeiten muss, da die autoritative 
Stelle SVN nutzt, benutze ich git-svn zum exportieren, dh ich habe lokal 
ein git repository, welches in der Lage ist mit dem SVN Server reden zu 
können und meine Stände als svn commits in das System einpflegen kann.

Jörg Wunsch schrieb:
> Letztlich habe ich aber immer irgendwo eine Stelle, die für ein
> bestimmtes Projekt autoritativ ist.  Damit hat eine verteilte
> Versionsverwaltung für mich nur sehr begrenzt Sinn.  (Ja, ich weiß,
> andere werden jetzt protestieren. ;-)  Ein Backup des VCS-Repos
> sollte natürlich existieren, aber es ist dafür ziemlich wurscht, ob
> dieses Backup explizit (bspw. per svn dump) erzeugt worden ist oder
> als Clone des autoritativen Repositories.

Ein Versionskontrollsystem ist natürlich kein Backup.
Die verteilten Versionskontrollsystem lassen natürlich auch work flows 
zu, die zentralistisch aufgebaut sind, mit angeschlossenem Backup ;)

Man kann in den verteilten Versionskontrollsystemen auch so etwas wie 
ein 'local caching' sehen, also das vorhalten der relevanten Daten an 
den Stellen, die schnell zugänglich sind.

Da bei einer Versionskontrolle aber nicht nur der aktuelle (meist nicht 
funktionierende :P ) Stand relevant ist, sondern die Frage, warum 
bestimmte Codestellen vor 3 Jahren genauso verbrochen wurden, muss 
natürlich die gesamte History mitgecached werden.

PS: Entschuldigt mein grässliches Denglisch, ich habe über deutsche 
Umschreibungen nachgedacht, viele hörten sich nicht kompatibel an.

von Stefanie B. (sbs)


Lesenswert?

Abdul K. schrieb:
> Ich habe mal die ersten paar Seiten gelesen und das vorher erwartete
> bestätigte sich:
> Ich sehe keine Lösung für den typischen kleinkriminellen
> Hobbyprogrammierer, also Leute die:

Gerade hier punkten die verteilten Versionskontrollsysteme:
1
hg init
alternativ auch
1
git init
ist weitaus einfacher als ein SVN/CVS Server aufzusetzen.
(Pauschalbehauptung, ich habe noch nie einen solchen Server aufgesetzt.)

Das ist ein Befehl zum Anfang. Dann regelmäßiges commiten (also Nutzen 
des VKS) nicht vergessen und schon ist auch ein kleines Projekt in guten 
Händen.

von Robert L. (lrlr)


Lesenswert?

>>Gerade hier punkten die verteilten Versionskontrollsysteme:

>hg init


dass das  "neu anlegen" 5 Minuten schneller ist
hilft einem nix, wenn GIT (tendenziell) schwieriger zu 
verstehen/bedienen ist



(gibt es so was wie tortoise für GIT ??, weil DAS ist wirklich 
anwendungsfreundlich)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Stefan B. schrieb:
> git wurde nicht entwickelt um ein weiteres Versionskontrollsystem zu
> erfinden, sondern um Linux effizient zu weiterzuentwickeln.

Dafür wird es (vermutlich, ich bin da nicht involviert) gut taugen.
Aber es hat einiges da drin, was meiner Meinung nach nur in diesem
Lichte überhaupt interessant ist und sonst gar nicht.

Was ich git übel nehme ist, dass alles anders heißt als bei anderen
VCSen, sodass man, wenn man mit mehr als einem umgehen muss, jedesmal
neu nachdenkt.

Das macht Mercurial nicht, obwohl es im Großen und Ganzen sehr
ähnliche Ansätze verfolgt (haben ja beide gemeinsame Wurzeln).

Die Anpreisung von git scheint mir bei einigen seiner Protagonisten
mittlerweile zu einer Art religiösem Glaubensbekenntnis geworden zu
sein. ;-)

Stefan B. schrieb:
> ist weitaus einfacher als ein SVN/CVS Server aufzusetzen.
> (Pauschalbehauptung, ich habe noch nie einen solchen Server aufgesetzt.)
1
svnadmin create

Nicht wirklich schwieriger. ;-)  Wenn man es nicht anschließend in
einen Apache integrieren will, kann man dann mit einer file:///-URL
drauf zugreifen.  Ansonsten kann man das primitiv-svnserve als
netzwerkweiten Server benutzen, dürfte von der Feature-Armut her etwa
vergleichbar sein mit den eingebauten Billig-HTTP-Servern von
Mercurial und git.

Letztlich ist auch eine Apache-Integration nicht schwierig (sofern man
den Indianer an sich schon mal in den Fingern hatte), und sie bietet
netzwerkseitig natürlich eine Schnittstelle, deren Funktion,
Sicherheit und Zuverlässigkeit einen etablierten Standard darstellt.

von Michael H. (michael_h45)


Lesenswert?

Stefan B. schrieb:
> ist weitaus einfacher als ein SVN/CVS Server aufzusetzen.
> (Pauschalbehauptung, ich habe noch nie einen solchen Server aufgesetzt.)

äpfel sind schwerer als birnen.
ich hab noch nie eine birne gesehen.


also manchmal fragt man sich wirklich...

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Das klingt alles nach einer unbekannten Sprache. Klar, vom Himmel fällt 
die persönliche Erkenntnis nicht. Vielleicht sollte ich einfach bei dem 
bleiben was ich kann: kleine Dateien, alles Text, regelmäßig Backup, 
sinnvolle Kommentare (auch wenn sie länglich werden) und ne genaue 
PC-Uhrzeit.

von Stefanie B. (sbs)


Lesenswert?

Michael H. schrieb:
> Stefan B. schrieb:
>> ist weitaus einfacher als ein SVN/CVS Server aufzusetzen.
>> (Pauschalbehauptung, ich habe noch nie einen solchen Server aufgesetzt.)
>
> äpfel sind schwerer als birnen.
> ich hab noch nie eine birne gesehen.
>
>
> also manchmal fragt man sich wirklich...

Ok, also man muss den svn server aufsetzen mit 'svnadmin create'.
Kann man auf dem Ordener dann arbeiten oder muss  man dann erst in einem 
anderen Ordner das ding noch klonen mit 'svn checkout'?

Die Frage stellt sich mir daher, weil svn unbedingt einen Server haben 
muss, also man arbeitet nur auf clients? (Daher auch meine Vermutung/ 
pauschale Behauptung.)

Jörg Wunsch schrieb:
> Die Anpreisung von git scheint mir bei einigen seiner Protagonisten
> mittlerweile zu einer Art religiösem Glaubensbekenntnis geworden zu
> sein. ;-)

Ich hoffe das es bei mir noch nicht soweit gekommen ist ;)
Obwohl ich durchaus gerne versuche Leute von verteilten Versionssystemen 
zu überzeugen. Das Konzept verteilter Versionskontrollsysteme ist 
einfach besser.
Das trifft für Einzelbenutzer zu, denn dort braucht man keine 
Client/Server Architektur, sondern nur genau dieses eine Repository.

Für das Arbeiten mit mehrern Leuten kann man sich aussuchen mit welchem 
Modell man arbeitet (siehe zb. die Bilder in 
http://git-scm.com/about/distributed Es gibt diese workflows auch für hg 
und bazaar)
Ausserdem ist es schneller und macht das Fehlen eines Backups weniger 
kritisch.

Da die verteilten VCS erst seit den letzten Jahren im Kommen sind, kann 
man sich über die Namen der einzelnen Aktionen streiten, welches Tool es 
denn nun 'richtig' benannt hat.
Ich habe lange Zeit mit einer proprietären Versionsverwaltung gearbeitet
(MKS) und dieses Tool ist dermassen von den Normen abgewichen, dass man 
git und Mercurial als 'gleich' ansehen kann.

git im Vergleich zu hg und bazaar ist meiner Meinung nach ähnlich wie 
der Vergleich von c zu Basic:
git ist dermassen mächtig und dadurch so 'gefährlich' für den anfänger, 
da man viel falsch machen kann. Wenn man allerdings die Tricks kennt, 
dann kann man sehr tief ins System eingreifen und somit in kurzer Zeit 
mächtige Operationen durchführen. (Made by engineers for engineers ;)

git hat sich gerade im Open Source Bereich stärker durchgesetzt als hg 
und bazaar. Der Grund dafür ist hoffentlich nicht so wie hier 
beschrieben: worse is better http://www.jwz.org/doc/worse-is-better.html

von Guido B. (guido-b)


Lesenswert?

Abdul K. schrieb:
> Das klingt alles nach einer unbekannten Sprache.

Klar ist das erstmal neu, es gibt aber das SVN-Buch (sogar auf
deutsch): http://svnbook.red-bean.com/nightly/de/svn-book.pdf

Nach den ca. ersten 20 Seiten kann es losgehen, den Rest schaut
man an, wenn man es braucht.

Bei mir läuft der SVN-Server lokal mit, jedoch auf der SSD und nicht
auf der Arbeitsplatte. Damit betrachte ich das gleich als einfaches
Backup.

Stefan B. schrieb:
> Ok, also man muss den svn server aufsetzen mit 'svnadmin create'.
> Kann man auf dem Ordener dann arbeiten oder muss  man dann erst in einem
> anderen Ordner das ding noch klonen mit 'svn checkout'?

Erst musst du den Ordner mit commit füllen, aus dem Arbeitsverzeichnis.
Du arbeitest auf diesem weiter und rührst die SVN-Ordner nicht direkt 
an.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Stefan B. schrieb:

> Ok, also man muss den svn server aufsetzen mit 'svnadmin create'.
> Kann man auf dem Ordener dann arbeiten oder muss  man dann erst in einem
> anderen Ordner das ding noch klonen mit 'svn checkout'?

Du musst dir eine working copy anlegen, da diese ja (naturgemäß)
im Unterschied zu einem verteilten VCS nicht identisch mit dem
Repository ist.

Der Rest danach ist aber wirklich nicht mehr so grob unterschiedlich.

> Die Frage stellt sich mir daher, weil svn unbedingt einen Server haben
> muss, also man arbeitet nur auf clients?

Jein.  Ich schrieb ja, du kannst eine file:///-URL benutzen:
1
$ svnadmin create /tmp/foo-repo
2
$ cd $HOME
3
$ svn co file:///tmp/foo-repo
4
Checked out revision 0.
5
$ cd foo-repo
6
$ echo hi > bar.txt
7
$ svn add bar.txt
8
A         bar.txt
9
$ svn -m 'Test commit' commit
10
Adding         bar.txt
11
Transmitting file data .
12
Committed revision 1.
13
$ svn info
14
Path: .
15
URL: file:///tmp/foo-repo
16
Repository Root: file:///tmp/foo-repo
17
Repository UUID: 6ee89915-6c09-4047-b1ee-05e843de7e13
18
Revision: 0
19
Node Kind: directory
20
Schedule: normal
21
Last Changed Rev: 0
22
Last Changed Date: 2012-06-28 16:14:17 +0200 (Thu, 28 Jun 2012)

Formal hast du natürlich eine URL, aber es gibt keinen wirklichen
Server dahinter, sondern der Zugriff über das URL-Schema namens "file"
weist den Client an, ein lokales Verzeichnis zu benutzen.

> Obwohl ich durchaus gerne versuche Leute von verteilten Versionssystemen
> zu überzeugen. Das Konzept verteilter Versionskontrollsysteme ist
> einfach besser.

Davon bin ich eben noch nicht überzeugt.

> Das trifft für Einzelbenutzer zu, denn dort braucht man keine
> Client/Server Architektur, sondern nur genau dieses eine Repository.

Siehe oben.  Der Unterschied ist eben nur, dass Repository und working
copy getrennt sind.  Für bestimmte Backup-Strategien kann das durchaus
ein Vorteil sein.  Gut, kann man mit einem DVCS auch haben (wenn ich
nur mit hg push / hg pull einen Clone anlege und wieder aktualisiere,
der aber nie selbst eine working copy erhält), aber dann mutiert ja
letztlich das DVCS zu einem klassischen serverbasierten VCS.

Im übrigen ist auch CVS komplett nicht-server-basiert.

> Da die verteilten VCS erst seit den letzten Jahren im Kommen sind, kann
> man sich über die Namen der einzelnen Aktionen streiten, welches Tool es
> denn nun 'richtig' benannt hat.

Mir geht's bei meiner Beschwerde bezüglich git nur darum, dass sie
Dinge anders genannt haben als bei den klassischen VCS, auch wenn es
sich um eine vergleichbare Aktion handelt.  Mercurial hat das nicht
getan, dort haben vergleichbare (zu CVS oder SVN) Aktionen den
gewohnten Namen bekommen.  Nicht-DVCS sind aber nun eindeutig älter,
darüber muss man nicht streiten. :-)

> Ich habe lange Zeit mit einer proprietären Versionsverwaltung gearbeitet
> (MKS) und dieses Tool ist dermassen von den Normen abgewichen, dass man
> git und Mercurial als 'gleich' ansehen kann.

Das Anführen noch schlechterer Beispiele ist keine Entschuldigung. ;-)

> git hat sich gerade im Open Source Bereich stärker durchgesetzt als hg
> und bazaar.

bazaar ist vermutlich mal einfach zu spät gewesen.

Ansonsten halte ich die Verbreitung im Linux-Umfeld für viel mehr
treibende Kraft als irgendeine Form architektureller Schönheit.  So
nach dem Prinzip: "Wenn Großwesir Linus das extra erfinden musste,
weil ihm alles andere nicht gefallen hat, dann muss es ja gut sein."

von Yalu X. (yalu) (Moderator)


Lesenswert?

Mein Werdegang:

1. Visual SorceSafe (A)
2. CVS              (H)
3. Subversion       (H, dann auch A)
4. Git              (A, dann auch H)

                     A = Arbeit
                     H = Hobby

Einigermaßen Spaß hat die ganze Sache aber erst mit Subversion und (noch
mehr) mit Git gemacht. Mercurial und Darcs würde ich auch mal gerne
ausprobieren, habe aber bisher nicht die Zeit dazu gefunden. Die Vor-
und Nachteile solcher Systeme erkennt man leider erst, wenn man ein
nicht ganz triviales Projekt damit durchzieht.

Da ich nur etwa 50% der Features von Subversion und vielleicht 20% der
Features von Git benutze, kenne ich viele der Vorteile von Git gegenüber
Subversion nur vom Hörensagen. Im Wesentlichen benutze ich Git gleich
wie Subversion, arbeite aber etwas ungehemmter mit Branches und Merges,
wobei meine Anforderungen an diese Dinge nicht so hoch sind, als dass
man sie nicht auch mit Subversion erschlagen könnte.

Sehr praktisch finde ich Git (bzw.verteilte VCSe), wenn man auf mehreren
Rechnern arbeitet, die nicht ständig netzwerkmäßig untereinander verbun-
den sind, man aber ständig die Vorteile der Versionsverwaltung nutzen
will. Da habe ich für Subversion noch keine zufriedenstellende Lösung
gefunden.

Bei Git hat man jeweils einen lokalen Klon des kompletten Repositorys
auf dem Rechner (und vielleicht noch einen weiteren auf dem USB-Stick),
so dass fast alle Vorteile der Versionsverwaltung auch unterwegs verfüg-
bar sind. Natürlich müssen die Klons hin und wieder untereinander syn-
chronisiert werden. Das ergibt sich aber fast von selbst, wenn man
öfters den Arbeitsort bzw. den Rechner wechselt.

Je mehr aktive Repository-Klone im Umlauf sind, umso weniger Arbeit geht
im Falle eines Festplatten-Crashs (und kaputtgegangenem Backup ;-))
verloren.

Ich würde jetzt Git nicht bis aufs Blut verteidigen, zumindest nicht,
solange ich nicht etwas tiefer drin stecke und mir noch ein paar andere
VCSe genauer angesehen habe. Für den Moment erfüllt es aber meine
bescheidenen Anforderungen in mehr als ausreichendem Maß, so dass ich in
nächster Zeit sicher nicht wechseln werde.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Jörg Wunsch schrieb:
> Was ich git übel nehme ist, dass alles anders heißt als bei anderen
> VCSen, sodass man, wenn man mit mehr als einem umgehen muss, jedesmal
> neu nachdenkt.

Findest du? Die Basisoperationen, die wahrscheinlich 95% der Arbeit mit
einem VCS abdecken, heißen doch bei Subversion und Git gleich und tun im
Wesentlichen auch dasselbe:

  checkout  add  commit  status  rm  mv  diff

Bei Subversion kommt als wichtiger Befehl noch update hinzu, den man
bei Git nicht braucht, da sich das lokale Repository nicht ohne eigenes
Zutun ändert.

Bei Git gibt es noch pull und push, um das lokale Repository mit
einem anderen abzugleichen. Diese Befehle werden wiederum bei Subversion
nicht benötigt, da es dort nur eine einzelne (zentrale) Repository-
Instanz gibt.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Ich werde wohl einfach das Betäubungsgewehr einpacken und in die 
Großstadt zum Wildern fahren. Dort lege ich auf Jörg an und wenn er 
aufwacht, ist er an einen Stuhl an einem neuen Schreibtisch neben meinem 
festgebunden. Dann hört er immer "Jörg, hier habe ich gerade die 
Konstante im Teiler geändert, weil die Frequenz laut Scope nicht paßte. 
Trag das mal ein.", "Jörg, mach dies und das", "Jörg, was hatte ich vor 
einer Stunde gändert und warum?", "Jörg, mach mal aus beiden vermutlich 
lauffähigen Sourcen vor 2 Jahren eine lauffähige mit den Vorteilen 
beider Sourcen. Ich brauch die in 5 Minuten!", "Jörg, mach Kaffe, aber 
sächsisch bitte!" ;-)

von Stefanie B. (sbs)


Lesenswert?

Yalu X. schrieb:
> Findest du? Die Basisoperationen, die wahrscheinlich 95% der Arbeit mit
> einem VCS abdecken, heißen doch bei Subversion und Git gleich und tun im
> Wesentlichen auch dasselbe:

Naja, also checkout und commit sind unterschiedlich.

checkout bei git checked branches aus oder setzt einzelne Dateien zurück 
auf die bisherige Version in dem branch.

svn checkout ist dagegen soetwas wie git clone.

commit be git legt die Dateien nur in das lokale repo hinein, während 
bei svn die Dateien für alle sichtbar auf den Server 'gepushed' werden 
(git push wäre das analogon)

siehe auch http://git.or.cz/course/svn.html

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Yalu X. schrieb:
> Bei Subversion kommt als wichtiger Befehl noch update hinzu, den man
> bei Git nicht braucht, da sich das lokale Repository nicht ohne eigenes
> Zutun ändert.

hg wiederum hat ein update, mit dem die lokale working copy
aktualisiert wird (bspw. nach einem hg pull oder einem hg push
von außerhalb).

> Sehr praktisch finde ich Git (bzw.verteilte VCSe), wenn man auf mehreren
> Rechnern arbeitet, die nicht ständig netzwerkmäßig untereinander verbun-
> den sind, man aber ständig die Vorteile der Versionsverwaltung nutzen
> will. Da habe ich für Subversion noch keine zufriedenstellende Lösung
> gefunden.

Kann man schon irgendwie zaubern, aber wenn du genau das wirklich
brauchst, dann ist ein DVCS natürlich auch genau das, was du willst.

Ist bei mir aber eher die Ausnahme denn die Regel.  In dem einen
Projekt, in dem ich mitarbeite, welches mit Mercurial arbeitet, mache
ich oft genug gleich nach dem commit ein push auf den autoritativen
Server, damit ich eben nicht erst später gezwungen bin, noch einen
Merge zu machen, weil zwischenzeitlich jemand anders auch noch
etwas geändert hat.  Damit bin ich letztlich bei der gleichen
Verfahrensweise, wie wenn man gleich SVN nimmt.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Stefan B. schrieb:
> Naja, also checkout und commit sind unterschiedlich.

Ok, das ist natürlich eine Frage der Perspektive. Wenn man das zentrale
SVN-Repository mit dem lokalen Git-Repository gleichsetzt und in SVN
immer nur denjenigen Branch im Arbeitsverzeichnis hält, an dem man auch
tatsächlich arbeitet, sind die Befehle schon sehr ähnlich: checkout
kopiert einen Branch vom Repository ins Arbeitsverzeichnis, commit
überträgt Änderungen vom Arbeitsverzeichnis ins Repository.

Die Ebene der Remote-Repositories in Git hat nach dieser Betrachtungs-
weise kein SVN-Äquivalent, das Gleiche gilt deswegen auch für push, pull
und fetch.

Jörg Wunsch schrieb:
>> Sehr praktisch finde ich Git (bzw.verteilte VCSe), wenn man auf mehreren
>> Rechnern arbeitet, die nicht ständig netzwerkmäßig untereinander verbun-
>> den sind, […]
>
> Kann man schon irgendwie zaubern, aber wenn du genau das wirklich
> brauchst, dann ist ein DVCS natürlich auch genau das, was du willst.

Das passiert bspw. dann, wenn ich beruflich bei Kunden oder Projektpart-
nern zu Besuch bin, um ein Stück Software (evtl. mehrere Varianten oder
Versionen davon) vor Ort zu testen, zu debuggen und zu optimieren. Da
hat man oft keinen Internetzugang, oder es ist aus firmenphilosophischen
Gründen nicht gestattet, Sourcecode über das Internet zu übertragen
(nicht einmal verschlüsselt).

Man kann natürlich auch bei SVN eine Kopie des Repos mitnehmen, muss
aber dann irgendwelche Änderungen, die man unterwegs macht und die man
auf mehrere Commits verteilen will, hinterher wieder irgendwie in das
Originalrepo hineinbasteln.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Ich muß eine meiner Fragen nochmal wiederholen: Ist irgendeines der 
Tools oder eine andere Methodik auch für andere Sachen als C-Code 
benutzbar? Ich erwähnte als Beispiel Simulationen in LTspice! Die muß 
ich ja auch verwalten.

von Michael H. (michael_h45)


Lesenswert?

Du kannst jede Art Datei damit verwalten.
Bei einem Binary macht natürlich z.B. ein diff wenig Sinn, aber 
Versionsverwaltung soweit funktioniert.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Abdul K. schrieb:
> Ist irgendeines der Tools oder eine andere Methodik auch für andere
> Sachen als C-Code benutzbar?

Praktisch alle VCSe arbeiten mit beliebigen Dateitypen, also bspw. auch
LTspice-, Eagle-, LibreOffice- oder Bilddateien. Einschränkungen gibt es
allerdings beim Versionsvergleich (diff) und beim Mergen von Branches
(merge). Beides beschränkt sich auf reine Textdateien. Auch die ASC-
Dateien von LTspice sind Textdateien, trotzdem entspricht die Ausgabe
der Unterschiede zweier solcher Dateien sicher nicht deinen Erwartungen.

Wenn man das akzeptiert, kann man mit Tools fast alles (mit Ausnahme
vielleicht von Gigabytes großen Videos) verwalten.

von Rolf M. (rmagnus)


Lesenswert?

Stefan B. schrieb:
> Gerade hier punkten die verteilten Versionskontrollsysteme:
> hg init
> alternativ auch
> git init
> ist weitaus einfacher als ein SVN/CVS Server aufzusetzen.
> (Pauschalbehauptung, ich habe noch nie einen solchen Server aufgesetzt.)

svnadmin create mein_repository

Da kann man dann lokal oder, wennn man einen ssh-Server laufen hat,  per 
svn+ssh drauf zugreifen.

Yalu X. schrieb:
> Sehr praktisch finde ich Git (bzw.verteilte VCSe), wenn man auf mehreren
> Rechnern arbeitet, die nicht ständig netzwerkmäßig untereinander verbun-
> den sind, man aber ständig die Vorteile der Versionsverwaltung nutzen
> will. Da habe ich für Subversion noch keine zufriedenstellende Lösung
> gefunden.

Man kann das ja auch in Kombination nutzen, also svn auf dem Server und 
lokal dann git. Dafür gibt's dann git-svn. Ich hab's bisher nur nicht 
eingesetzt, weil das verwendete svn-Repository, bei dem das in Frage 
käme, mit external links arbeitet und git-svn dafür keine einfache 
Lösung bietet.

Yalu X. schrieb:
> Praktisch alle VCSe arbeiten mit beliebigen Dateitypen, also bspw. auch
> LTspice-, Eagle-, LibreOffice- oder Bilddateien. Einschränkungen gibt es
> allerdings beim Versionsvergleich (diff) und beim Mergen von Branches
> (merge). Beides beschränkt sich auf reine Textdateien.

Das ist ja an sich nicht zwingend so, nur bräuchte man für diese beiden 
Operationen halt für jedes Binärformat ein eigenes Programm, das das 
kann. Bei Text ist dafür ein einfaches diff-Tool und ein Texteditor 
ausreichend, ideal ist ein Texteditor mit eingebauter diff-Funktion. Für 
die meisten Binärformate gibt's halt keine entsprechenden Tools, bzw. 
ist es auch nicht immer sinnvoll (z.B. bringt es nicht viel, bei PNG die 
geänderten Pixel mergen zu können). Bei denen ist es dann auch nicht 
sinnvoll, wenn mehrere Leute parallel dran arbeiten. Deshalb hat svn 
hierfür auch immer noch Unterstüzung für die klassische 
"lock-modify-unlock"-Methode.

von Robert L. (lrlr)


Lesenswert?

ich hab gelesen
bei GIT macht man

"commit bevore merge"

kann mir das jemand erklären?
als SVN Nutzer, wüsste ich nicht wie das gehen soll (da macht man "merge
bevore commmit"

was irgendwie logisch ist, weil nach dem merge ja mal (normalerweise) 
eine menge Konflikte und sonstige "Probleme hat..

und man/ich ja auf keine Fall ein inkonsistenten stand im repo haben 
will

von Rolf Magnus (Gast)


Lesenswert?

Robert L. schrieb:
> ich hab gelesen
> bei GIT macht man
>
> "commit bevore merge"
>
> kann mir das jemand erklären?
> als SVN Nutzer, wüsste ich nicht wie das gehen soll (da macht man "merge
> bevore commmit"

Ich verstehe das so:
Bei git hast du ein lokales Repository, also gibt's da nix zu mergen, 
wenn du da rein commitest. Späer synchronisierst du das dann mit einem 
remote-Repository, und erst dann mußt du mergen.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Rolf Magnus schrieb:
> Später synchronisierst du das dann mit einem
> remote-Repository, und erst dann mußt du mergen.

Weiß nicht, wie das bei git gelöst ist, bei Mercurial muss man
nach dem Merge dann erneut committen.  Das finde ich echt lästig.
(Ja, wirklich vermeiden lässt sich das bei diesem Modell nicht, ist
mir schon klar.)

von auch Hans (Gast)


Lesenswert?

Also bei Mercurial (ist ja ähnlich wie GIT) wird durch den Commit dann 
eine Art Branch erzeugt. Synchronisiert man sich dann mit einem anderen 
Repository, in dem auch Ändereungen vorgenommen wurden, erhält man zwei 
Branches (den eigenen und den fremden). Die kann man dann mergen und hat 
dann wieder nur einen Branch.
Bei SVN ist der Nachteil ja, daß man durch ein Update direkt in der 
Working Copy mergen muß. Dadurch hab ich mir schon so einiges 
zerschossen. Bei Mercurial sind erstmal alle Änderungen im Repository 
gesichert und man kann dann in aller Ruhe mergen, gucken ob es geht und 
im Notfall den Mergevorgang wiederholen.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

auch Hans schrieb:
> Bei Mercurial sind erstmal alle Änderungen im Repository
> gesichert und man kann dann in aller Ruhe mergen, gucken ob es geht und
> im Notfall den Mergevorgang wiederholen.

Das ist natürlich wirklich mal ein Argument, das ich nachvollziehen
kann und das für DVCS spricht (auch dann, wenn man das "D" eigentlich
gar nicht braucht, weil es ohnehin ein zentrales, "autoritatives"
Repository gibt, gegen das sich alle hin und wieder abgleichen müssen).

CVS war in der Beziehung wohl besser als SVN: dort wurden bei einem
Merge die bisherigen Dateien der working copy (sofern es lokale
Änderungen gab) als .#<Dateiname>.<Version> beiseite gelegt, sodass
man seine vorherige working copy immer noch einmal einsehen konnte.

von Robert L. (lrlr)


Lesenswert?

vorweg: ICH meinte mit Merge was anders als ihr (das was SVNMerge macht, 
und svn selber garnicht kann, nämlich (teile) aus einem Branch z.b. 
zurück in den Trunk mergen, mehrfach usw. )

aber egal:

>CVS war in der Beziehung wohl besser als SVN: dort wurden bei einem
>Merge die bisherigen Dateien der working copy

ein "ganz normales" svn update meinst du,
das macht SVN natürlich genau so
wenn nicht automatisch merged werden kann
wird das ganze dann als Konflikt markiert, den man beheben muss
man hat ein datei aus dem repo, und seine eingenen mit änderungen


geht (wie gesagt) mit tortoise (und dem integrierten winmerge) alles 
bestens
wüsste nicht wie man sich da was zerschießt..

von auch Hans (Gast)


Lesenswert?

Zerschießen kann man sich da was, wenn viele Zeilen Code im Repository 
und in der Working Copy geändert wurden . Da hilft mir dann auch 
WinMerge nur bedingt. Das ist unübersichtlich und fehleranfällig. Oder 
das Mergetool meint garkeinen Konflikt festzustellen und löscht mal 
fleißig irgendwas oder fügt Müll irgendwo ein, wo er nicht hingehört. 
Und dann darf man suchen gehen.
Das ist bei Mercurial eleganter, da ich beide Versionen sicher im 
Repository habe und das so oft probieren kann wie ich will und 
nachträglich gegen beide ein Diff durchführen kann.

Bei einem Mergevorgang zwischen zwei Branches gibt es keine 
Unterschiede, außer daß es mit Mercurial sehr einfach geht und ein 
Mergetracking mit drin ist. Subversion ist da ein Krampf (ich habe es 
jedenfalls mit statndard SVN Kommandos und TortoiseSVN noch nicht 
ordentlich hinbekommen).

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Robert L. schrieb:

> ein "ganz normales" svn update meinst du,
> das macht SVN natürlich genau so

Nein.

> wenn nicht automatisch merged werden kann
> wird das ganze dann als Konflikt markiert, den man beheben muss
> man hat ein datei aus dem repo, und seine eingenen mit änderungen
                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Aber bereits mit den Markierungen für die beim Merge aufgetretenen
Fehlermeldungen.  Die originale Datei der working copy hat man nicht
mehr danach (bei CVS halt schon).

> wüsste nicht wie man sich da was zerschießt..

Wenn die Änderungen hinreichend komplex waren (zwischen Repo und
working copy), dann kann der Automatismus schon mal versagen und
völlig falsche Stellen versuchen zu patchen.

> vorweg: ICH meinte mit Merge was anders als ihr (das was SVNMerge macht,
> und svn selber garnicht kann, nämlich (teile) aus einem Branch z.b.
> zurück in den Trunk mergen, mehrfach usw. )

Ja, bei SVN sind das zwei Merges, bei git/hg dagegen ist ja beides
dasselbe.  Dort erzeugt man ja implizit mit seinen Änderungen
erstmal einen Branch, immer.  Wenn sich beim nächsten Abgleich mit
einem anderen Repository dort ebenfalls etwas geändert hat, muss man
dann einen Merge anwerfen, der logisch dem entspricht, was SVN beim
"svn update" macht, aber letztlich eher so gehandhabt wird, wie man
das bei "svn merge" machen würde.  (Bei letzterem finde ich in den
aktuellen Versionen das Konzept der svn:mergeinfo nicht schlecht,
sofern man eine gewisse Disziplin an den Tag legt und sich auf
bestimmte Basisverzeichnisse einigt, in denen man das svn merge
ausführt.)

von R. M. (rmax)


Lesenswert?

Abdul K. schrieb:
> Welche Lösungen habt ihr erarbeitet, um eure Versionskontrolle eurer
> Arbeit zu organisieren?

Ich werfe hier mal noch einen Außenseiter in den Ring, der meiner 
Meinung nach jedem, der vor der Entscheidung für ein 
Versionskontrollsystem steht, einen Blick wert sein sollte:

Fossil (http://www.fossil-scm.org) ist ein kleines aber feines 
Versionsverwaltungssystem, das der Autor von SQLite geschrieben hat.

Man kann es sowohl lokal als auch verteilt einsetzen und es enthält 
neben der eigentlichen Versionsverwaltung noch ein Wiki und einen 
Ticket-Tracker. Das macht es as meiner Sicht ideal für Hobby-Projekte, 
die man ohne viel Aufwand selbst hosten will, was aber nicht heißen 
soll, daß es nicht auch für größere Projekte taugt.

Es ist u.A. für Linux, Windows und Mac verfügbar (und natürlich im 
Quellcode) und besteht aus einer einzigen ausführbaren Datei, die man 
ohne Installation aufrufen kann. Neben der Kommandozeile ist ein 
grafisches Interface vorhanden, das über einen eingebauten Webserver 
realisiert wird. Außerdem kann man es als CGI in einen bestehenden 
Webserver einbinden.

Das Repository und die Verwaltungsinformation einer Working Copy stecken 
jeweils in einer einzigen SQLite-Datei, und sind dadurch 
transaktionssicher und einfach zu archivieren.


Neben SQLite und Fossil selbst werden z.B. auch die Sourcen von Tcl/Tk 
seit letztem Jahr mit Fossil verwaltet:

http://www.fossil-scm.org/index.html/timeline
http://www.sqlite.org/src/timeline
http://core.tcl.tk/tcl/timeline?y=ci
http://core.tcl.tk/tk/timeline?y=ci
http://core.tcl.tk/

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

auch Hans schrieb:
> Subversion ist da ein Krampf (ich habe es
> jedenfalls mit statndard SVN Kommandos und TortoiseSVN noch nicht
> ordentlich hinbekommen).

Tortoise kenne ich nur vom Draufgucken, benutze ich nicht.

Mit svn merge selbst funktioniert es so schlecht gar nicht.

Eventuell könnte dir hier die Entwickler-Doku von FreeBSD helfen,
die Zusammenhänge zu verstehen:

http://www.freebsd.org/doc/en_US.ISO8859-1/articles/committers-guide/subversion-primer.html

(Runterscrollen bis 4.4.3)

von Robert L. (lrlr)


Lesenswert?

>Aber bereits mit den Markierungen für die beim Merge aufgetretenen

nein, das stimmt nicht
man bekommt bei einem Konflikt (Bis zu?) 4 Dateien

eine davon
die  xxxx.mine Datei (hab ich gerade ausprobiert)

diese ist Original die eigene (wie der Name schon sagt)


>Oder
>das Mergetool meint garkeinen Konflikt festzustellen und löscht mal
>fleißig irgendwas oder fügt Müll irgendwo ein,

das ist mir noch überhaupt nie passiert, weiß nicht wie das gehen 
soll...

>Wenn die Änderungen hinreichend komplex waren (zwischen Repo und
>working copy),

dann hat man aber was falsch gemacht: warum sollen 2 Programmierer am 
selben "komplexen" teil zugleich Änderungen vornehmen? ohne sich 
abzusprechen

und WENN man schon "komplexe" Änderungen machen muss, macht man die in 
einem Branche und hat das Problem eh nicht (weil DANN ist vor dem merge 
von branche nach trunk ja alles im repo..)

von auch Hans (Gast)


Lesenswert?

Robert L. schrieb:
> dann hat man aber was falsch gemacht: warum sollen 2 Programmierer am
> selben "komplexen" teil zugleich Änderungen vornehmen? ohne sich
> abzusprechen
Dann fällt mir z.B. generierter Code ein. Da kann sich mal ganz schnell 
ganz viel ändern. Dann ändert sich auch schnell mal die Reihenfolge der 
Codeteile in einer Datei und niemand steigt mehr durch.

> und WENN man schon "komplexe" Änderungen machen muss, macht man die in
> einem Branche und hat das Problem eh nicht (weil DANN ist vor dem merge
> von branche nach trunk ja alles im repo..)
Genau so etwas tut man mit Mercurial und einem "Commit before Merge" ja 
auch.

Was jetzt von beidem besser ist will ich nicht sagen. Ich verwende auch 
privat Subversion und Mercurial. Subversion hat den riesigen Vorteil mit 
großen Binärdateien umgehen zu können. Bei 300 MB war bei Mercurial 
(jedenfalls vor nem Jahr) Schluß und ich konnte die Dateiänderungen 
nicht mehr Pushen. Und Subversion hat Partial Checkouts.
Mercurial ist halt toll, wenn man auf verschiedenen Rechnern arbeitet 
oder unterwegs ist und 'ne alte Version braucht, aber kein 
Internetzugang hat oder die Server nicht online verfügbar sind.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Robert L. schrieb:
> eine davon
> die  xxxx.mine Datei (hab ich gerade ausprobiert)
>
> diese ist Original die eigene (wie der Name schon sagt)

OK, stimmt, das hatte ich mittlerweile vergessen.  Offenbar schon
lange keine Merge-Konflikte mehr mit SVN gehabt. ;-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.