Da TFS a Git

14

Sono uno sviluppatore .NET e ho utilizzato TFS (team foundation server) come software di controllo del codice sorgente molte volte. Le buone caratteristiche di TFS sono:

  1. Buona integrazione con Visual Studio (quindi faccio quasi tutto visivamente, nessun comando della console)
  2. Check-out facile, processo di registrazione
  3. Facile fusione e risoluzione dei conflitti
  4. Semplici build automatizzati
  5. Branching

Ora, voglio utilizzare Git come backbone, repository e controllo del codice sorgente dei miei progetti open source. I miei progetti sono in C #, JavaScript o linguaggio PHP con MySQL, o database SQL Server come meccanismo di archiviazione.

Ho appena usato l'aiuto di github.com per questo scopo e ho creato un profilo lì, e ho scaricato una GUI per Git. Fino a questa parte è stato così facile.

Ma sono quasi bloccato ad andare oltre. Voglio solo fare alcune semplici (molto semplici) operazioni, tra cui:

  1. Creazione di un progetto su Git e associazione a una cartella sul mio laptop
  2. Controllo / controllo di file e cartelle
  3. Risoluzione dei conflitti

Questo è tutto ciò che devo fare ora. Ma sembra che la GUI non sia così intuitiva. Mi aspetto che la GUI abbia un Connect To... o qualcosa del genere, e quindi mi aspetto che venga mostrato un elenco di progetti, e quando ne scelgo uno, mi aspetto di vedere l'elenco di file e cartelle di quel progetto, proprio come esplorare il tuo progetto TFS in Visual Studio. Quindi voglio essere in grado di fare clic con il pulsante destro su un file e selezionare check-in... o check-out e cose del genere.

Mi aspetto molto? Cosa dovrei fare per usare facilmente Git proprio come TFS? Cosa mi manca qui?

    
posta Saeed Neamati 15.10.2011 - 13:38
fonte

7 risposte

19

I vantaggi del git sono venuti dal buttare fuori molte vecchie ipotesi su cosa dovrebbe fare un VCS. Gli svantaggi sono derivati dal non essere in grado di sfruttare l'esperienza precedente e di non essere in grado di fare le cose nel modo in cui sei abituato.

Se stai per passare da qualcos'altro a git, prova ad avviare tabula-rasa (anche se è praticamente impossibile farlo nella pratica). Valutalo in base a ciò che fa e quanto bene lo fa, non a come lo fa rispetto a come sei abituato a farlo. Non è che ti aspetti troppo, è che le tue aspettative sono ortogonali a ciò che fornisce git. Se sei sposato con l'interfaccia grafica, rimarrai deluso. Git ha strumenti GUI disponibili, ma non aggiungono molto. Non è un fallimento fornire loro così tanto che non c'è molto che un gui possa aggiungere. GitK aiuta, non nelle operazioni quotidiane, ma piuttosto nella visualizzazione della struttura delle filiali e nell'esaminare o cercare la cronologia.

Ecco un'analogia sciocca per ciò che intendo per "ortogonale". Una delle cose che puoi fare con un giornale è avvolgere il pesce, o usarlo per allineare una gabbia per uccelli. Ma quelli non sono essenziali per la funzione di un giornale, quelle sono caratteristiche incidentali del modulo che arriva. Aspettando git per "archiviare i file", o "permetti di selezionare i progetti", o fornire una "connessione a ..." è un po 'come aspettarsi di essere in grado di avvolgere i pesci o allineare la tua gabbia con il sito web di un giornale .

    
risposta data 15.10.2011 - 15:56
fonte
7

Hai preso in considerazione il mercurio? Come git, è un DCVS e ti consente di fare tutto ciò che puoi fare con un DCVS. Come git, c'è un buon fornitore di servizi cloud-based (bitbucket). Ma, a differenza di Git, la storia di Windows è abbastanza decente, non sei un cittadino di 2a classe. Hai ottime opzioni di strumenti (TortiseHG) e un'integrazione visiva discreta (VisualHG).

Niente sarà come TFS in Visual Studio - il mondo non è cablato in questo modo.

    
risposta data 15.10.2011 - 17:28
fonte
6

Sono passato da SVN a Git un anno fa, e ne sono molto contento. Tuttavia, non sto facendo affidamento su alcuna GUI e nel caso in cui rifiuti rigidamente la riga di comando potrebbe essere un problema.

Sembri aspettarti che git funzioni nel modo in cui sei abituato, ma non è così. Non è difficile, ma dovresti dare un'occhiata ai suoi principi prima di procedere.

Creating a project on Git and mapping it to a folder on my laptop

Git è distribuito, il che significa che lavori sempre con il tuo repository locale, che può essere associato a qualsiasi numero di telecomandi, incluso zero. Quando gioco con il progetto di altri sto usando due telecomandi: il loro git o repository SVN e il mio server.

Inizio sempre creando una directory vuota e poi git init o git clone SOME-REMOTE-REPOSITORY . Questo link potrebbe aiutarti.

Checking out/checking in files and folders

Ti sei perso per scrivere quale GUI stai usando. Sia TortoiseGit che git-gui sicuramente possono farlo.

Resolving conflicts

Per questo sto usando git-gui o il mio editor di testo preferito.

I expect the GUI to have a Connect To... or something like that

Connetti a cosa, quando possono esserci telecomandi da 0 a N? Git non rimane connesso a un server remoto, crea la connessione solo temporaneamente e solo per i pochi comandi che funzionano con il repository remoto. La maggior parte del lavoro viene eseguita localmente.

then I expect a list of projects to be shown

Sto assumendo per projects intendi repositories .

Temo che non ci sia nulla di simile. Git su un server remoto funziona esclusivamente con un solo repository. Elencare tutti i repository equivale a elencare tutte le directory che contengono la sottodirectory .git . Sono sicuro che ci sia qualcosa di simile su GitHub .

I choose one, I expect to see the list of files and folders of that project, just like exploring

Ancora una volta, temo che non ci sia nulla di simile, dal momento che git funziona localmente. E ancora, non sarebbe di grande utilità. Basta clonare il repository ed esplorarlo sul tuo computer. Mentre la clonazione di enormi reposli richiede un po 'di tempo, tutte le operazioni successive sono molto più veloci e puoi guardare qualsiasi commit o ramo.

Then I want to be able to right click a file and select check-in... or check-out and stuff like that.

Ancora, git funziona localmente. Quindi non ha senso effettuare il check-in o il check-out a un repository remoto. Lavorare in questo modo è una perdita di tempo anche su una LAN veloce. Porta il repository sul tuo computer, lavora con esso e git push le modifiche al telecomando. Pensaci come pubblicare le tue modifiche e anche fare il backup. Dovresti eseguire il commit localmente molto spesso .

Prima di iniziare il tuo lavoro, git fetch o git pull le modifiche dal remoto nel caso in cui qualcun altro potrebbe aver lavorato con esso.

Do I expect much?

Sì e no. Ti aspetti qualcosa di diverso da ciò che offre. Puoi ottenere qualcosa di molto meglio, git è potente, flessibile, sicuro, veloce come l'inferno e può fare tutto ciò di cui hai bisogno, ma non può imitare esattamente ciò che VCS centralizzato fa.

    
risposta data 15.10.2011 - 15:34
fonte
5

Ho reso il journy da fonte visuale sicuro a tfs a svn a git.

Passare da vss a tfs è stata un'esperienza piacevole. Passare da TFS a SVN è stata un'esperienza piacevole. Passare da svn a git è stata una specie di battaglia interna.

Spesso mi trovo abbastanza conservatore e cerco di aggrapparmi a ciò che funziona. Per me è preferibile un bel gui sulla riga di comando e mi sono ritrovato a cercare qualche gui che mi permettesse di giocare con i ragazzi fantastici con cui lavoro. Hanno tutti usato git con la riga di comando esclusivamente.

Il momento eureka per me è arrivato una volta che ho rinunciato alla ricerca di una gui di proiettili d'argento e ho iniziato a dare a git bash una prova (sto ancora imparando).

Ho qualche guis installato e completano git dalla riga di comando. Estensioni Git, fornitore di controllo del codice sorgente Git per studio visivo e git tartaruga. Ma dico di familiarizzare con git bash. I comandi possono essere un po 'criptici, ma una volta appresi sono molto più veloci della gui.

Branching with git è semplicemente FANTASTICO rispetto agli altri. Creare rami e passare tra i rami è quasi istantaneo. Puoi fare cose che non ti preoccuperai di fare con svn perché in pratica svn copia la tua copia di lavoro (almeno come ho fatto io).

Trovo che Git abbia una curva di apprendimento più ripida di svn. Ma una volta che lo "prendi" con git, non vuoi tornare indietro.

Vai fino in fondo.

    
risposta data 16.10.2011 - 01:20
fonte
5

Sei abituato ad avere un server che memorizza i tuoi file e ne è il proprietario onnipotente. Per modificare un file devi chiedere l'autorizzazione al server.

Git non è così. Pensa a git in questo modo: hai il tuo repository locale. Git ti consente di commutare modifiche, inversioni inverse, ramificazione facile e veloce, ecc. Quando vuoi eseguire il backup della tua cronologia del controllo sorgente, spinga le tue modifiche al altro repository, che "sembra essere" un server, come GitHub.com.

Flusso di lavoro:

  1. Clona (Download) / Crea repository
  2. Apporta alcune modifiche. Continua con lo sviluppo senza preoccuparti degli altri.
  3. Invia a un altro repository (potrebbe essere un server come GitHub).
  4. Quando si preme su un repository, al proprietario dell'altro repository viene notificato il push in sospeso e si deve decidere se accettare tali commit, rifiutarli o solo prenderne un sottoinsieme.
  5. Il ciclo continua.

Questo è tutto.

    
risposta data 16.10.2011 - 14:18
fonte
1

Che cosa intendi con "la" git gui? Ce ne sono un gazillion, incluso un plugin per l'integrazione di Visual Studio, se ricordo bene. Se una GUI non funziona per te, prova ancora un po 'fino a quando non trovi quello che fa. Personalmente uso diverse GUI per compiti diversi (e la CLI per gli altri).

Tuttavia, git è più un framework di controllo della versione che un sistema fisso. Dovrai comunque imparare alcune nozioni di base per ottenere il massimo da esso.

    
risposta data 15.10.2011 - 20:48
fonte
-2

Do I expect much?

Si

What should I do to easily use Git just like TFS?

Niente. Git è centrato sulla CLI e non ha alcun front end buono (so di TortoiseGit, che è la risposta not , rispetto ad altre Tortoise *). puoi provare a usare SmartGit (attenti a Java)

    
risposta data 15.10.2011 - 15:35
fonte

Leggi altre domande sui tag