Do TFS para o Git

14

Sou um desenvolvedor .NET e usei o TFS (Team Foundation Server) como meu software de controle de origem muitas vezes. Bons recursos do TFS são:

  1. Boa integração com o Visual Studio (por isso, faço quase tudo visualmente; sem comandos de console)
  2. Check-out fácil, processo de check-in
  3. Fácil fusão e resolução de conflitos
  4. Construções automatizadas fáceis
  5. Ramificação

Agora, quero usar o Git como backbone, repositório e controle de origem de meus projetos de código aberto. Meus projetos estão em linguagem C #, JavaScript ou PHP com MySQL ou bancos de dados SQL Server como mecanismo de armazenamento.

Eu apenas usei a ajuda do github.com para esse propósito, criei um perfil lá e fiz o download de uma GUI para o Git. Até esta parte foi tão fácil.

Mas eu estou quase presa em ir mais longe. Eu só quero fazer algumas operações simples (muito simples), incluindo:

  1. Criando um projeto no Git e mapeando-o para uma pasta no meu laptop
  2. Fazer check-out / check-in de arquivos e pastas
  3. Resolvendo conflitos

Isso é tudo que preciso fazer agora. Mas parece que a interface gráfica não é amigável. Espero que a GUI tenha um Connect To... ou algo assim, e então espero que uma lista de projetos seja mostrada, e quando eu escolher um, espero ver a lista de arquivos e pastas desse projeto, assim como explorar seu projeto TFS no Visual Studio. Então eu quero poder clicar com o botão direito do mouse em um arquivo e selecionar check-in... ou check-out e coisas assim.

Eu espero muito? O que devo fazer para usar facilmente o Git como o TFS? O que estou perdendo aqui?

    
por Saeed Neamati 15.10.2011 / 13:38
fonte

7 respostas

19

O git das vantagens veio de jogar fora muitas suposições velhas sobre o que um VC deve fazer. As desvantagens do git vieram de não ser capaz de alavancar a experiência anterior e de não ser capaz de fazer as coisas do jeito que você está acostumado.

Se você vai mudar de outra coisa para git, tente iniciar tabula-rasa (embora seja impossível realmente fazer na prática). Avalie-o com base no que ele faz e em como ele funciona, e não em como ele faz em comparação com o modo como você está acostumado a fazê-lo. Não é que você espere muito, é que suas expectativas são ortogonais ao que o git fornece. Se você é casado com a operação GUI, ficará desapontado. O Git tem ferramentas de gui disponíveis, mas elas não adicionam muito. Isso não é um fracasso em fornecer-lhes tanto quanto não há muito que um gui possa adicionar. O GitK ajuda, não nas operações do dia-a-dia, mas na visualização da estrutura de ramificação e na análise ou pesquisa do histórico.

Aqui está uma analogia boba para o que quero dizer com "ortogonal". Uma das coisas que você pode fazer com um jornal é enrolar peixe ou usá-lo para forrar uma gaiola. Mas essas não são essenciais para a função de um jornal, são características incidentais da forma em que ele entra. Esperando que o git "faça o check-in dos arquivos", ou "permita que você selecione projetos", ou um "conectar-se a ..." é como esperar enrolar peixe ou enfileirar sua gaiola com o site de um jornal .

    
por 15.10.2011 / 15:56
fonte
7

Você já considerou mercurial? Como o git, é um DCVS e permite que você faça todas as coisas legais que se pode fazer com um DCVS. Como o git, existe um bom provedor de serviços baseado na nuvem (bitbucket). Mas, ao contrário do git, a história do Windows é bastante decente, você não é um cidadão de 2ª classe. Você tem boas opções de ferramentas (TortiseHG) e integração Visual Studio bastante decente (VisualHG).

Nada vai ser como o TFS no visual studio - o mundo simplesmente não está conectado dessa maneira.

    
por 15.10.2011 / 17:28
fonte
6

Eu mudei do SVN para o git um ano atrás, e estou muito feliz com isso. No entanto, eu não estou confiando em qualquer GUI e no caso de você recusar rigidamente a linha de comando, pode ser um problema.

Você parece esperar que git funcione da maneira que está acostumado, mas não funciona. Não é difícil, mas você deve dar uma olhada em seus princípios antes de prosseguir.

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

O Git é distribuído, o que significa que você sempre trabalha com o seu repositório local, que pode ser mapeado para qualquer número de controles remotos, incluindo zero. Ao jogar com o projeto do outro, estou usando dois controles remotos: o repositório git ou SVN e o meu próprio servidor.

Sempre começo criando um diretório vazio e, em seguida, git init ou git clone SOME-REMOTE-REPOSITORY . Este link pode ajudar você.

Checking out/checking in files and folders

Você perdeu para escrever a GUI que está usando. Tanto TortoiseGit quanto git-gui certamente podem fazê-lo.

Resolving conflicts

Para isso, estou usando git-gui ou meu editor de texto favorito.

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

Conecte-se a quando, quando pode haver 0 a N controles remotos? O Git não fica conectado a um servidor remoto, ele cria a conexão apenas temporariamente e apenas para os poucos comandos que trabalham com o repositório remoto. A maior parte do trabalho é feita localmente.

then I expect a list of projects to be shown

Estou assumindo que projects significa repositories .

Eu temo que não exista tal coisa. O Git em um servidor remoto trabalha estritamente com apenas um repositório. Listar todos os repositórios é equivalente a listar todos os diretórios que contêm o subdiretório .git . Tenho certeza de que há algo assim em GitHub .

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

Mais uma vez, receio que não exista tal coisa, pois git funciona localmente. E novamente, não seria de muita utilidade. Basta clonar o repositório e explorá-lo no seu computador. Enquanto a clonagem de repos enormes leva algum tempo, todas as operações subseqüentes são muito mais rápidas, e você pode olhar para qualquer commit ou branch.

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

Novamente, git funciona localmente. Por isso, não faz sentido fazer check-in ou check-out para um repo remoto. Trabalhar dessa maneira é uma perda de tempo, mesmo em uma LAN rápida. Obtenha o repositório em seu computador, trabalhe com ele e git push as alterações no controle remoto. Pense nisso como publicar suas alterações e também fazer backup. Você deve comprometer localmente com muita frequência .

Antes de começar seu trabalho, git fetch ou git pull as alterações do controle remoto no caso de alguém ter trabalhado com ele.

Do I expect much?

Sim e não. Você espera algo diferente do que oferece. Você pode obter algo muito melhor, git é poderoso, flexível, seguro, rápido como o inferno e pode fazer tudo que precisa, mas não pode imitar exatamente o que VCS centralizado faz.

    
por 15.10.2011 / 15:34
fonte
5

Eu fiz o journy da fonte visual safe to tfs para svn to git.

Ir de vss para tfs foi uma experiência agradável. Indo de tfs para svn foi uma experiência agradável. Ir de svn para git tem sido uma espécie de batalha interna.

Muitas vezes eu me vejo bastante conservador e tento me prender ao que funciona. Um bom gui é para mim preferível ao longo da linha de comando e eu me encontrei procurando por algum gui que me deixasse brincar com as crianças legais com as quais eu trabalho. Todos eles usaram o git exclusivamente com a linha de comando.

O momento eureka para mim veio assim que eu desisti da busca por um gui de balas de prata e comecei a dar uma chance ao git bash (eu ainda estou aprendendo).

Eu tenho algumas guis instaladas e elas complementam o git da linha de comando. Extensões do Git, provedor de controle de fonte do Git para visual studio e git de tartaruga. Mas eu digo se familiarizar com o git bash. Os comandos podem ser um pouco enigmáticos, mas quando você os aprende, eles são muito mais rápidos que o gui.

Ramificar com o git é simplesmente INCRÍVEL em comparação com os outros. Crie filiais e alterne entre filiais quase que instantaneamente. Você pode fazer coisas que você não se incomodaria em fazer com o svn porque o svn basicamente copia sua cópia de trabalho (pelo menos do jeito que eu fiz).

Eu acho que o Git tem uma curva de aprendizado mais íngreme do que o svn. Mas uma vez que você "pega" com o git, você não quer voltar.

Git todo o caminho.

    
por 16.10.2011 / 01:20
fonte
5

Você está acostumado a ter um servidor que armazena seus arquivos e é o proprietário onipotente deles. Para editar um arquivo, você deve pedir permissão ao servidor.

Git não é assim. Pense em git desta maneira: você tem seu repositório local. O Git permite que você cometa mudanças, faça commits reversos, ramificações fáceis e rápidas, etc. Quando você quiser fazer o backup de seu histórico de controle de origem, você empurra suas alterações para outro repositório, que "simplesmente é" um servidor, como o GitHub.com.

Fluxo de trabalho:

  1. Clone (Download) / Criar repositório
  2. Faça algumas alterações. Continue com o desenvolvimento sem se importar com os outros.
  3. Pressione para outro repositório (pode ser um servidor como o GitHub).
  4. Quando você envia para um repositório, o proprietário desse outro repositório é notificado sobre o push pendente e deve decidir se aceita esses commits, recusá-los ou apenas obter um subconjunto deles.
  5. O ciclo continua.

Isso é tudo.

    
por 16.10.2011 / 14:18
fonte
1

O que você quer dizer com "git gui"? Há um zilhão deles, incluindo um plugin para integração de estúdio visual, se bem me lembro. Se uma interface gráfica não funcionar para você, tente mais algumas até encontrar uma que funcione. Eu pessoalmente uso diferentes GUIs para tarefas diferentes (e o CLI para outros).

No entanto, o git é mais uma estrutura de controle de versão do que um sistema fixo. Você ainda terá que aprender algumas noções básicas para tirar o máximo proveito dela.

    
por 15.10.2011 / 20:48
fonte
-2

Do I expect much?

Sim

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

Nada. O Git é centrado no CLI e não tem nenhum frontend bom (eu sei sobre o TortoiseGit, que é não resposta, comparando com outro Tortoise *). Você pode tentar usar o SmartGit (cuidado com Java)

    
por 15.10.2011 / 15:35
fonte