Quali sono le grandi differenze tra TFVC (TFS Version Control) e Git per il controllo del codice sorgente quando si utilizza Visual Studio 2013?


101

Ci sono un sacco di domande e risposte su Git e TFVC Source Control, ma nessuna risposta attuale copre l'integrazione di Git in Team Foundation Server / Service che posso trovare.

Sto iniziando lo sviluppo di pascoli verdi utilizzando un'ampia varietà di linguaggi (C #, C ++, PHP, Javascript, MySSQL) utilizzando Visual Studio 2013. In futuro, ci sarà qualche sviluppo iOS. Ho molta familiarità con SVN, VSS e TFVC per il controllo del codice sorgente. Tuttavia, non ho mai usato Git. Preferisco TFS per la gestione dei processi / sviluppo agile ... Non è perfetto, ma si integra bene in Visual Studio.

Quindi, per aiutarmi a decidere tra questi due sistemi ...

Quali sono le grandi differenze tra TFVC e Git per il controllo del codice sorgente quando si utilizza Visual Studio 2013?

  • L'unico vantaggio nel mio caso è un repository locale (senza dire che è insignificante) e il supporto allo sviluppo iOS?
  • È l'unico inconveniente di Git l'interfaccia della riga di comando (alcuni direbbero che non è uno svantaggio ;-P).
  • Hai esperienza nella GUI di Visual Studio 2013 per Git? È sufficiente per supportare la ramificazione / fusione di base senza l'interfaccia della riga di comando?
  • Esiste una guida di avvio dettagliata per Git che mostri l'uso di Git con Visual Studio 2013? Microsoft ha un video per l'integrazione di un repository Git esistente in Visual Studio 2013, ma sto cercando un inizio da zero con Git e VS 2013.

Non sto cercando un libro qui, ma solo alcuni punti elenco e forse alcuni collegamenti rilevanti da persone che hanno utilizzato sia TFVC che Git.

Risposte:


115

Quali sono le grandi differenze tra TFS e Git per il controllo del codice sorgente quando si usa VS 2013?

MSDN ha una pagina molto ampia su tutte le funzionalità e le differenze tra Team Foundation Version Control e Git .

L'unico vantaggio nel mio caso è un repository locale (non dire che è insignificante) e il supporto allo sviluppo IoS?

No, c'è molto di più, ma spesso sono scenari avanzati di Git. Repo locale, supporto offline e fedeltà locale completa sulla cronologia sono incredibilmente potenti, lo ottieni immediatamente con Visual Studio. Ci sono anche alcune altre funzionalità che sono fantastiche! La capacità di ramificarsi e unire da un repository a un altro è molto potente. Ti consiglio di cercare il libro Pro Git per quelli. Git in TFS è solo un altro server git, ha praticamente tutte le funzionalità che lo standard Git ha.

La capacità di riscrivere la cronologia prima dell'unione consente di rimuovere o combinare un numero di serie di modifiche più piccole, in modo che la cronologia sia più pulita e più facile da leggere come un essere umano.

È l'unico inconveniente di Git l'interfaccia della riga di comando (alcuni direbbero che non è uno svantaggio ;-P).

TFVC ha anche una riga di comando, le persone semplicemente non la usano. Per le persone che vogliono usare Git e non fare mai molto di più di TFVC, probabilmente non avranno davvero bisogno di lasciare l'interfaccia utente, ma non avranno molte delle fantastiche funzionalità ...

Potrebbero esserci altri inconvenienti, principalmente dovuti al fatto che è diverso da quello a cui le persone sono abituate. Non è troppo difficile spararti sul piede se non ti prendi il tempo per imparare cosa fa Git quando fai le cose. Cose come Rebase e Squash sono davvero potenti e creano una cronologia molto pulita, ma possono lasciare alle persone il problema di non poter più unire se usate in modo errato. TFS ha la capacità di mettere alcune impostazioni di sicurezza per togliere i diritti per prendere decisioni molto stupide su un repository git .

Un componente aggiuntivo molto interessante per gli utenti Git su Windows è PoSHGit . fornisce il completamento automatico dei comandi sulla riga di comando di Powershell.

Hai avuto esperienza nella GUI di VS 2013 per Git? È sufficiente per supportare la ramificazione / fusione di base senza l'interfaccia della riga di comando?

Ha tutto il necessario per le operazioni di base. Ma devi essere in grado di visualizzare i diversi rami per sapere cosa sta succedendo. Poiché il server Git e il repository locale sono solo Git, qualsiasi client Git può aiutarti qui. SourceTree è un'opzione qui. Il client Git per Windows è un altro.

Per le operazioni standard, check-in, check-out, merge, branch (o push, pull, fetch, commit, merge) l'interfaccia utente funziona perfettamente.

Esiste una guida di avvio dettagliata per Git che mostri l'utilizzo di Git con VS 2013? MS ha un video per l'integrazione di un repository Git esistente in VS 2013, ma sto cercando un inizio da zero con Git e VS 2013?

L'inizio con Git è disponibile in diversi posti ... Queste sono alcune opzioni:

Altre buone letture:

E alcuni strumenti che vale la pena installare:


3
Gli ALM Rangers pubblicheranno presto la loro guida agli utenti di Git per TFVC qui: vsarbranchingguide.codeplex.com/releases . L'attuale versione beta non ce l'ha ancora, prevedo che verrà rilasciata con il prossimo lotto :).
jessehouwing

8
Dopo quasi un anno dal mio post originale, ho pensato di farvi sapere che stiamo usando VS2013 con Git con successo. Adoro la possibilità di creare più repository in un unico progetto team. Abbiamo avuto alcuni problemi durante l'unione. In molti casi l'unione automatica sceglie in modo errato. Quindi quello che sembra un'unione riuscita in realtà non lo è. Ora controlliamo due volte tutti i file uniti. Inoltre, ci sono alcuni casi in cui l'unione si blocca e genera un errore nell'interfaccia utente VS (conflitto di unione libgit2). Per risolvere il problema, dobbiamo passare al prompt di cmd ed emettere un git pull (non divertente).
Greg Grater,

1
So che è in arrivo una correzione per l'ultimo errore come parte dell'aggiornamento 4. E che ci sono stati casi in cui le impostazioni di fine linea differivano tra gli sviluppatori che possono causare questi problemi.
jessehouwing

5
Abbiamo utilizzato VS 2013 con Update 4 da quando è stato rilasciato mesi fa e sembra che tutti i nostri problemi di Git siano stati risolti dalla GUI. Abbiamo l'abitudine di eseguire il pull regolarmente dal server remoto, il che aiuta a mantenere aggiornati i nostri repository locali. Inoltre, negli ultimi tempi, MS ha ricevuto diversi aggiornamenti positivi per il Product Backlog / Task Board. Direttamente dalla bacheca, ora puoi modificare la descrizione, assegnare, impostare lo stato e regolare la priorità / ordine dell'articolo.
Greg Grater

1
I link "Git vs TFVC" si collegano a "Inizia a usare Git". Significa ora che dovremmo usare meglio Git su TFVC? ; D ha trovato un nuovo collegamento: visualstudio.com/en-us/docs/tfvc/comparison-git-tfvc
Martin Schneider,

17

Per chiarire un po 'di terminologia mista confusa che viene utilizzata molto con TFS

Team Foundation Server (TFS) è uno strumento di gestione del ciclo di vita dell'applicazione, che include un componente del sistema di controllo della versione (VCS) di origine .

Il componente VCS utilizzato da TFS è principalmente Team Foundation Version Control (TFVC)

Quindi, la domanda sarebbe TFVC vs Git

(In effetti, TFS supporta Git come opzione VCS .)

Quindi, la domanda è: TFVC vs Git

jessehouwing ha un'ottima risposta che copre questo in dettaglio, quindi per favore fai riferimento a questo

Per quanto riguarda la scelta di quale utilizzare, secondo me vince Git

  1. È leggero: semplice da configurare e iniziare a utilizzare.
  2. La sua natura distribuita significa che è molto resistente ai disastri, qualcuno avrà sempre una copia del repo.
  3. Il lavoro offline è semplice, stai lavorando con il tuo repository completo. È possibile eseguire il commit delle modifiche, il ripristino, la cronologia di navigazione, ecc. È necessario essere in linea solo quando si desidera eseguire la sincronizzazione con un repository remoto.
  4. In TFS non esiste un modo semplice per salvare lo stato delle modifiche (aggiunte di file, modifiche, eliminazioni di file) e passare a un altro stato del codice. (Ad esempio, per lavorare su due funzioni e passare avanti e indietro). In git, devi semplicemente controllare un ramo diverso.

1
TFS ha rami e set di scaffali (che consente il n. 5) e puoi persino configurare i tuoi progetti per usare git se lo desideri. TFS VCS ha anche una riga di comando per #. Non è leggero ma fa molto di più fuori dagli schemi rispetto a git in quanto ha una gestione completa del progetto / tracciamento dei bug / tracciamento del lavoro / gestione del rilascio / gestione della build / politica di check-in / test integrati.
Matthew Whited

@MatthewWhited Certo che è possibile, ma è estremamente macchinoso rispetto a git, a causa della sua implementazione basata su directory rispetto all'implementazione basata su grafici di git. Nota che ho affermato che non c'è simplemodo di farlo.
James Wierzba

@ MatthewWhited Inoltre, sono d'accordo sugli strumenti aggiuntivi del ciclo di vita dell'applicazione, ma sto definendo la mia risposta solo per le soluzioni di controllo della versione del codice sorgente.
James Wierzba

1
IDK ... Ho trovato TFS piuttosto semplice da usare. Anche se non mi piacciono anche tutti i rami creati da GIT in quanto rende più complesso garantire che tutti siano lo stesso codice con un rapido abbandono per alcuni mentre lento per altri.
Matthew Whited

Non lo so. GIT è semplicemente troppo complicato per l'attività che mira a svolgere e molto non intuitivo (perché è una richiesta pull e non una richiesta push?!). Il controllo del codice sorgente TF è molto semplice e può essere spiegato a qualsiasi nuovo sviluppatore nel mio team in pochi minuti. Vedo anche incoraggiare il lavoro a livello locale come un grande svantaggio all'interno di un team e anche individualmente. Come eviti di perdere il tuo lavoro in Git senza sporcare il progetto con rami? (Per questo ci sono scaffali in TFS - SUL SERVER)
Cesar

4

È l'unico inconveniente di Git l'interfaccia della riga di comando (alcuni direbbero che non è uno svantaggio ;-P).

Se non ti senti a tuo agio con l'interfaccia della riga di comando, sono disponibili più frontend GUI per Git. Git stesso contiene effettivamente lo strumento GUI del browser del repository chiamato gitke git-gui- una GUI per git. Poi ci sono app di terze parti come git-cola , TortoiseGit e altre .


2
Ovviamente Visual Studio stesso fornisce una GUI per Git. Ma ci sono sempre momenti in cui potresti voler immergerti nella riga di comando per fare cose che altrimenti sarebbero impossibili. Una GUI che espone tutti i comandi Git è difficile quanto la riga di comando.
jessehouwing

Ci sono strumenti di potere della riga di comando. Ad esempio per eliminare completamente un ramo dall'esistenza.
Ingegnere
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.