Qual é a maneira mais eficaz de trabalhar com um amigo no mesmo jogo?

29

Precisamos de algo em que possamos fazer o check-out dos arquivos, editá-los, fazer o check-in novamente e criar a partir deles.

Algo como o Google Docs, onde podemos editar o mesmo código ao mesmo tempo, seria o ideal.

Nós dois estamos usando o Visual Studio 2010.

steakbbq
fonte
2
Eu sempre me perguntei por que ninguém (ou pelo menos não encontrei) edição de código semelhante a documentos. Eu acho que existem algumas dificuldades inerentes, como a conclusão do código e o fato de que o código precisa ser compilado, mas elas não parecem totalmente impossíveis de serem superadas com alguma coordenação (e possivelmente truques como estratégias de mesclagem de código atrasado). Problema REAL em grandes projetos. Vou ter que cavar para colaborativo codificação de ferramentas de qualquer maneira (ou fazer um para mim: P)
kaoD
1
O @kaoD SubEthaEdit oferece esse tipo de funcionalidade por arquivo (não sabe ao certo como ele lida com grandes quantidades de arquivos).
Michael.bartnett 17/02/2012
Se alguém puder me encontrar um programa como esse para windows e c #, darei um cookie.
steakbbq
1
O Emacs pode fazer isso, mas é desajeitado: emacswiki.org/emacs/CollaborativeEditing ; ou MoonEdit: moonedit.com (embora eu não saiba se ele tem um modo C #); ou Gobby: en.wikipedia.org/wiki/Gobby
amitp:
Quão difícil seria escrever um novo compilador IE sublime? Provavelmente seria mais fácil desenvolver um plugin para sublime, certo?
steakbbq

Respostas:

19

Como afirmei em um comentário à sua pergunta, estou muito curioso pela verdadeira edição colaborativa . Pesquisei há algum tempo, mas a maioria das soluções simplesmente não atendia aos padrões: ou eram editores de texto simples com destaque de sintaxe, tinham custos insanos ou não estavam disponíveis em várias plataformas (como SubEthaEdit ...)

Até que eu tropecei em Saros ! É um plugin limpo do Eclipse, portanto, pode ser fácil integrar-se ao seu fluxo de trabalho atual. Você pode assistir ao vídeo de demonstração , é bastante impressionante. É muito bem pensado para um verdadeiro ambiente de edição colaborativa e possui alguns recursos-chave muito bem pensados. Ele suporta um número arbitrário de participantes, sincronização completa do projeto, edição em tempo real com marcadores e destaque (ala Google Docs), seguindo a visão do seu parceiro, vários métodos de conscientização dos participantes e muito mais (você pode até compartilhar sua tela usando este plug-in. ) E, aparentemente, ele se integra a muitos outros plugins do Eclipse!

Ainda tenho que testá-lo, mas é um dos poucos projetos ainda mantidos e parece muito promissor. Experimente e me avise (leia estas diretrizes antes.) Prometo voltar aqui e postar minhas impressões como um comentário quando eu tentar.

EDIT: Além disso, como Gustavo apontou em um comentário, Cacoo também pode ser útil. É uma ferramenta colaborativa on-line para desenhar UMLs (na verdade, qualquer tipo de diagrama). O Saros suporta um quadro branco, mas não há nada como uma ferramenta de diagrama se você deseja evitar a falta de jeito.

kaoD
fonte
3
As pessoas deram muitas respostas, todas em sistemas de controle de versão, mas acho que essa é a resposta real da pergunta. +1 para edição colaborativa. BTW, experimente o Cacoo (google it) É uma ferramenta colaborativa para criar UMLs, me ajudou em vários projetos, pode complementar sua resposta.
Gustavo Maciel
1
@ Gustavo-Gtoknu ferramenta muito boa, de fato, você se importa se eu atualizar a resposta com ela?
KaoD 17/02/2012
2
Faça isso agora! : D A resposta merece.
Gustavo Maciel
Isso é ótimo, porém o Eclipse é para java? Estou executando c #
steakbbq
@steakbbq existem alguns plugins que fornecem suporte a C # ( Emonic e Improve ), mas infelizmente eles parecem não ter suporte para depuração e refatoração.
21412 kaoD
36

"só precisamos de algo em que possamos verificar os arquivos, editá-los e, em seguida, retorná-los e criar a partir do mesmo conjunto de arquivos"

Use controle de versão; um sistema de controle de versão (VCS) é exatamente o que você descreveu, com o bônus adicional de armazenar um histórico de todas as alterações que alguém fez. Existem muitos sistemas populares de controle de versão por aí:

http://subversion.apache.org/

http://mercurial.selenic.com/

http://git-scm.com/

Não uso o Visual Studio pessoalmente, mas tenho certeza absoluta de que o Visual Studio tem suporte para todos esses sistemas de controle de versão.

jhocking
fonte
11
Apenas entreguei um host Git / HG privado gratuito no chat: bitbucket.org (gratuito para até 5 colaboradores). Além disso, o HG é mais adequado, pois possui plugins que lidam com grande conteúdo binário (projetos de conteúdo).
Jonathan Dickinson
2
+1 A VCS é o caminho a percorrer. Eu uso o AnkhSVN como meu plug-in do Visual Studio para Subversion.
Richard Marskell - Drackir
2
+1 aqui. meu endosso pessoal é o TortoiseSVN. Para hospedagem (assumindo open source) a minha recomendação é Google Code
PlayDeezGames
2
Por favor, não subversão. O controle de versão distribuído é totalmente simples para pessoas que não estão acostumadas a trabalhar com sistemas centralizados. As pessoas costumavam subversion perder e ficar confuso.
Rjmunro
9

Para minha equipe, usamos três programas, dependendo do que precisamos trabalhar:

  • TortoiseSVN para código (tente fazer com que os programadores usem o mesmo IDE, padronize convenções e incentive bons comentários)
  • Dropbox para multimídia (para modelos / sprites / arquivos de áudio, permite que os desenvolvedores trabalhem localmente até que artistas / compositores / modelistas estejam prontos para entregar)
  • Documentos Google para documentação (para documentos de design / maquetes / arremessos geralmente para designers, gerentes e produtores)

Para coordenar os esforços de diferentes membros (que trabalham em momentos diferentes), usamos o sistema de emissão de bilhetes da Assembla . Dessa forma, todos são atualizados sobre o status de todo o projeto ou uma avenida específica de sua escolha. Use também Skype / Google Hangout / Presencial para garantir que todos estejam na mesma página pelo menos semanalmente.

Esse método geralmente funciona quando uma equipe consiste em 3 a 5 pessoas que estabeleceram funções (programador, artista, modelador, designer etc.). Se isso não funcionar, tente outros métodos ou combine aspectos de trabalho para criar um de seus próprios. Boa sorte!

construtor de mitos
fonte
Eu só falei sobre controle de versão para código, porque esse é o único aspecto do desenvolvimento sobre o qual ele perguntou, mas meu estúdio também usa o Dropbox e o Google Docs para os mesmos fins que esta resposta.
Jhocking
Ótima combinação.
Bill K
7

Parece que você deseja uma caixa suspensa, um sistema de controle de versão ou ambos.

Dropbox é o mais conveniente. Basta fazer as alterações e salvar. O Dropbox sincronizará as alterações na máquina dos seus amigos. Não pense que duas pessoas podem trabalhar no arquivo ao mesmo tempo, sem sobrescrever as outras.

No entanto, eu recomendo que você use um sistema de controle de versão Subversion , GIT e Mercurial atualmente. 3. Existem muitas vantagens em usar um VCS: incluindo a capacidade de automatizar backups, alterações de reversão e verificar seu código em qualquer computador que tenha acesso ao seu servidor.

Tendo usado os três que eu mencionei, achei o Subversion o mais fácil de começar e o Assembla permite repositórios privados gratuitos SVN ou GIT.

ClassicThunder
fonte
9
Eu realmente não gosto de dropbox para esse tipo de coisa. Se você usa qualquer um dos produtos Tortoise *, ele possui um tipo semelhante de integração com o Windows Explorer, mas você pode controlar o commit / push / pull / merge para não ter o problema "2 pessoas se substituindo".
21412 Jimmy Jimmy
2
Eu também não, e é por isso que recomendo um VC. No entanto, quase não há curva de aprendizado e você tem um backup instantâneo, por isso considero que vale a pena mencionar.
ClassicThunder
9
Eu recomendo não usar o DropBox no lugar de um sistema de controle de versão. Se duas pessoas modificarem o mesmo arquivo durante o mesmo período, o DropBox duplicará o arquivo. Para o código-fonte, isso geralmente é indesejável e mais trabalhoso do que usar um sistema de controle de origem.
John McDonald
O Subversion não é mais fácil de usar - as pessoas que costumavam ter o acharão tão confuso quanto as pessoas que seguem o caminho inverso.
Rjmunro
Eu nunca disse que era. Eu disse para mim que era o mais fácil aprender a aprender. É estúpido expressar frases subjetivas como "Subversion não é mais fácil de usar" em termos absolutos.
ClassicThunder
5

Como mencionado em outras respostas, um VCS é o caminho a percorrer. Git é o meu favorito, mas isso pode ser apenas porque foi o primeiro que eu usei.

Achei este livro on-line muito útil para aprender Git. http://progit.org/book/ Seja qual for o seu VCS, vale a pena dedicar algumas horas para descobrir como usá-lo.

Outra coisa que vale a pena mencionar - o VCS é ótimo para código fonte (ou qualquer arquivo de texto), mas o armazenamento de imagens e arquivos de som pode inchar seu repositório desnecessariamente. Algumas pessoas recomendam um repositório separado para isso, mas acho que o Dropbox funciona bem para esses tipos de recursos.

Para um projeto escolar, usamos uma pasta pública do Dropbox e usamos esse script para manter nossos recursos atualizados https://github.com/dc2011/td/blob/master/tools/extrafiles.sh

Ele verifica o hash md5 do arquivo no Dropbox com o hash do arquivo já existente no disco (se existir), para que somente os arquivos novos ou alterados sejam baixados.

reitor
fonte
1
Sim, eu costumava usar o svn. Agora eu sempre uso o Git. Embora muitas pessoas não gostem da linha de comando, acho muito confortável. No Windows, uso o Console, que envolve o ambiente do git-bash. No OSx, é apenas o Terminal com o tema Solarized.
Prozaker
Eu concordo, eu moro no terminal, se eu puder! Às vezes, há uma curva de aprendizado um pouco mais íngreme, mas facilita muito a automação. Se você usa o OSX regularmente, deve consultar o iTerm2. Ele suporta 256 cores, bem como o modo de tela cheia e utiliza divisões muito bem.
Dec
4

Como muitos mencionaram, você precisa de controle de versão. Existe uma boa oferta gratuita do software FogCreek (você deve agradecer por fornecerem stackexchange, o que torna este site possível). É chamado de Kiln (construído sobre o Mercurial ) e integra-se a um bom produto de software de rastreamento de bug / recurso / tempo que eles criaram, chamado FogBugz . Para uma equipe de 2 desenvolvedores, eles fornecem versões gratuitas desses produtos (e os hospedam para você). Eu uso essa configuração para meus próprios projetos e as versões pagas para todos os produtos de software em que trabalho para meu empregador (temos uma equipe muito maior de desenvolvedores, portanto, é necessário usar as versões pagas). Vale uma olhada, com certeza.

Se você decidir usá-los, aqui estão alguns bons tutoriais ou links úteis para você começar:

Jason Down
fonte
1

Ferramentas que minha equipe usa para uma colaboração tranquila:

• GitHub, que se você tiver um pouco de dinheiro, é uma maneira extremamente barata e fácil de hospedar toda a sua fonte. Esta é a plataforma de controle de versão que a maioria das pessoas aqui tem falado. Pense nisso como uma conta Pastebin que existe no disco rígido local e é atualizada sempre que algum membro da sua equipe faz alterações. Projetos hospedados são chamados de depositários. Existem muitos clientes gratuitos do Git, alguns deles se integram diretamente ao Windows para manter seus depositários limpos e atualizados.

• Documentos do Google para documentos de design de jogos, idéias, conceitos art.

• Uso ocasional do DropBox se um de nós precisar de um ativo ou script específico ... isso é raro e preferimos trabalhar no GitHub.

Sam Loeschen
fonte
1

Se você usa o Visual Studio, a melhor opção é Team Foundation, é da Microsoft e é o melhor controle de versão que eu conheço, o negativo é que você precisa de um servidor, servidor sql e servidor de base da equipe para executar no servidor (o cliente já está no visual studio), se você tiver a chance, tente.

Rudy_TM
fonte
Atualmente, estou usando o Team Foundation. Tenho uma pergunta sobre ramificação e mesclagem de ramificações. Se eu criar duas ramificações e alguém adicionar algum código a uma classe, e eu adicionar algum código diferente à classe quando mesclá-las, adicionará as duas alterações ao arquivo ou obteremos um erro e teremos que escolher uma das alterações ?
steakbbq
Eu não uso branch para isso, uso branch para versões diferentes, se você fizer esse visual studio, possivelmente fará a mesclagem ruim (é como quando alguém está usando uma classe e outra verifica a mesma classe e as duas adicionam código, o visual studio solicitará que você faça uma mesclagem manual), se você quiser fazer alterações em uma classe ao mesmo tempo, por que você não usa classes parciais? usar os ramos para as diferentes versões, tha forma, você tem mais controle sobre suas versões
Rudy_TM
"Team Foundation, é da Microsoft e é o melhor controle de versão que eu conheço" Oh, meu Deus :) Você já tentou algo mais?
Andy M
1

Para a programação de pares virtuais, eu uso esta configuração (coordenando tudo pelo Skype):

  1. Instale um servidor SSH em uma de suas máquinas.
  2. Instalar tmux
  3. A outra pessoa está no seu computador.
  4. Faça com que o host inicie uma sessão tmux
  5. Faça com que seu parceiro execute 'tmux at' na conexão SSH

Agora você e seu amigo verão exatamente a mesma tela do terminal. Mas você provavelmente deseja trabalhar em conjunto fora do seu computador, certo?

  1. Crie uma conta no Bitbucket.org, crie um projeto (eu prefiro o Git) e siga as instruções para criar um repositório vazio.
  2. Copie os arquivos do seu projeto com "git add. && git commit -m 'Initial commit'."
  3. Enviar para Bitbucket com "git push origin master"

Agora você e seu amigo podem trabalhar nas alterações de forma independente e enviá-las para o Bitbucket quando estiver pronto.

Isso não permitirá que vocês editem juntos no Visual Studio de uma maneira agradável, mas você poderá editar o código-fonte em si, se estiver emparelhando algum novo recurso ou depurando um problema. Contanto que você faça suas alterações posteriormente, seu amigo poderá abri-lo no VS.

Michael Burge
fonte
1

Eu sugeriria o controle de versão do Bazaar . É pequeno, prático, muito bom para projetos pequenos / one2few men. Git e SVN são usados ​​com mais frequência em projetos / equipes maiores. O Bazaar possui no desenvolvimento o plugin VS, mas para você não faz muita diferença usá-lo fora do VS. É realmente fácil usá-lo depois de conhecê-lo e configurá-lo inicialmente. Tem mais alguns plugins que são úteis.

edin-m
fonte
-2

Já há muitas boas sugestões, mas se você quiser uma solução simples e de baixa tecnologia, isso funcionará para mim quando eu colaborar:

  1. Use comentários no cabeçalho de cada script para acompanhar quando foi editado, quem por e quando, por exemplo:

    Vers      Date      Author   Note
    
    1.0.1     12/10/11  Paul     Added a new boss to level 12
    1.0.2     22/11/11  Frank    Fixed the bug introduced by Paul
  2. Um fórum privado ou, melhor ainda, um Wiki é uma boa maneira de comunicar idéias e manter todos atualizados com o progresso.

As idéias dadas já são melhores que essa solução, mas isso é muito fácil de implementar com um investimento de tempo mínimo; para um projeto pequeno, com apenas duas pessoas trabalhando juntas, pode ser suficiente para suas necessidades.

Tendo trabalhado para uma grande organização global, posso dizer honestamente que a quantidade de tempo perdida devido à burocracia em torno do software de controle de versão (MKS) é uma verdadeira dor!

davidjwest
fonte
Eu odeio comentários como esse na cabeça de cada script. E de qualquer maneira isso não aborda a questão aqui; As técnicas para rastrear alterações não informam nada sobre como os membros da equipe compartilharão seu trabalho uns com os outros.
Jhocking
Bem, a comunicação não é um problema, meus colegas desenvolvedores sentam-se em ventrilo o dia todo comigo e conversamos bastante, rs.
steakbbq