.Gertjan. schreef op maandag 24 november 2014 @ 18:55:
[...]
Bij andere tools is het toch ook een feature
Een feature is voor mij niets anders dan een "functionaliteit" die geboden wordt
Voor zover ik weet kan TFS "standaard" offline werken, wat met SourceSafe niet mogelijk was. Standaard staat TFS volgens mij ook op non-exclusive checkouts, waardoor je in principe op de server merged.
Hoewel niet optimaal, kan je prima offline werken.
Het is bij TFS een feature in die zin dat TFS altijd online moet zijn. Ook bij non-exclusive checkouts zal die nog altijd een checkout op de server doen, en kun je volgensmij ook nog niet editen zolang die checkout niet is gebeurd (of je offline bent). Van TFS is het dus een feature dat je offline kunt werken (waar je normaal altijd online werkt). Waar er, voor zover ik weet, geen enkel ander VCS is wat "altijd online" moet zijn, en daardoor ook geen "offline modus" nodig is. Voor SVN etc maakt het niet uit wanneer, en op welke manier, jij een file edit. Op het moment dat je gaat commiten wordt er een diff berekend tussen de laatste commit en de huidige files, en dat is je commit. Waar TFS bijhoud dat je een file gaat editen (middels een checkout), en een commit zal per definitie alleen die files committen wat ook uit gechecked zijn. Daarom moet TFS dus
extra functionaliteit bieden (checkouts, met als gevolg dat je altijd online moet zijn, en er een offline modus nodig is), waar andere VCSen geen checkouts hebben, en daardoor hoef je niet altijd online te zijn, en er dus geen "offline" functionaliteit nodig is, want die is er per definitie al.
.Gertjan. schreef op maandag 24 november 2014 @ 18:55:
[...]
Daar heb je inderdaad een groot voordeel van een distributed systeem te pakken, maar ook daar kleven nadelen aan. Als je je wijzigingen te lang opspaart en je systeem klapt omver ben je veel werk kwijt. Bij TFS of een ander non distributed ben je hooguit de changes sinds je laatste checkin kwijt.
Maar goed, ieder systeem heeft zijn eigen voor- en nadelen.
Niemand houd je tegen om na elke commit ook een push te doen. En je kunt ook elke dag pushen. Daarnaast kan er bij git alleen iets mis gaan als je of de .git map verwijderd, of je PC/HDD kapot is (en daardoor de .git map verwijderd is). Daarnaast zul je bij beide (TFS/non distributed, en distributed) normaliter een commit doen per logisch/afgerond stukje werk. Wat kan betekenen dat je bij bv TFS een aantal uur werk aan een stuk opspaart. Waar je bij Git (in ieder geval) nog kleinere stukjes telkens kunt commiten, en als het grotere geheel eenmaal af is kun je dan de commits samenvoegen en pushen. Voordeel: je kunt kleinere commits doen, en daardoor ook makkelijker terug gaan als iets toch niet helemaal lekker werkt. Waar je bij TFS met heel veel kleine commits meteen een flinke historie krijgt wat het terugzoeken van dingen weer moeilijker maakt.