Pergunta

Agora antes de você atirar em mim por trazer uma pergunta duplicada sobre Sof, deixe-me primeiro familiarizá-lo com exatamente o que estou procurando, e vou abordar outras perguntas e respostas e por que é insuficiente.

Pergunta # 1 :

Estou procurando uma maneira de realizar edições colaborativas ao vivo, enquanto a fonte é mantida em um servidor de controle de origem centralizado. Por exemplo, se eu e Joe Blow estão editando o arquivo X.cs ao mesmo tempo, devemos ser capazes de ver as edições de cada um dos outros à medida que digamos. Quase como se estivéssemos sentados juntos no mesmo computador. Agora pegue o seguinte cenário: eu e Joe Go offline, e Nimha Smith decide que ela quer atualizar algum código. Quando eu voltar online no dia seguinte, fico empurrado o código que Nimha atualizou enquanto eu estava dormindo / longe do servidor.

Esta é uma combinação da ideia de colaboração ao vivo, e um sistema de controle de origem como svn, etc.

Endereçamento das possíveis duplicatas:

Houve uma pergunta semelhante, aqui: edição colaborativa para .NET DESENVOLVIMENTO - Quais são as possibilidades , no entanto, não me dá nada útil e explicarei por que:

  • vsanywhere : é executado através de um servidor público central (direção certa ..?) Exceto todas as partes envolvidas Para ter exatamente o mesmo código em sua máquina antes de ingressar em uma sessão, e depois de ir off-line, a sessão é destruída.
  • SourceMeet : Executa com um sistema P2P, portanto, nenhum servidor para acompanhar as alterações enquanto offline etc. Não tentei, então eu não posso atestar o quão bem ele pode mesclar código (se puder em tudo)
  • collabedit : não visualstudio
  • nuvem 9 : não visualstudio

e há obviamente Esta questão e este um

<edit>

Eu recentemente encontrei este projeto de tese de bacharel chamado Collab , e parece uma boa ideia, mas eu não podia parecer que trabalhasse para experimentá-lo. Se alguém mais tiver algum sucesso, por favor me avise o que você fez. Parece que se eu puder obter este projeto de colaboração trabalhando, parece que seria um bom começo em criar algo para encaixar minhas necessidades.

<edit2>

Eu também me deparei com Beweevee Que tinha uma extensão do Visual Studio para o serviço, mas todo o Links para ter ido morto. E codealike Qual foi provavelmente o seu substituto para a colaboração em tempo real tem uma entrada de FAQ explicando que são recursos em tempo real foi removido e será reexplementado no "futuro".

Pergunta # 2:

Agora isso me leva à segunda parte da minha pergunta, porque eu percebo plenamente que não pode haver um programa por aí que se encaixa no meu alto pedido. Onde posso começar a implementar software como este eu mesmo? Há algum código de edição de controle de origem de código aberto / de código aberto que eu posso começar a criar para criar isso? Ou estou praticamente preso começando do zero se quiser implementar isso. E tenho certeza que você pode ver pelas tags que eu gostaria de enfrentar uma tarefa como esta em C #, se eu tiver que enfrentar tudo.

Atualização 2017

Como houve algum interesse contínuo expresso nos comentários que eu criei um gitter onde podemos reunir alguém interessado e potencialmente tornar isso uma realidade: https://gitter.im/sof-centrailizado-collab-editing/lobby .

Foi útil?

Solução

Se você quiser resolver isso sozinho, talvez goste de fazê-lo como uma extensão do Visual Studio. Observe que existem dois tipos diferentes de plug-ins: "add-ons" e "extensões". Pessoalmente, eu acho que você deve escrever uma extensão , mas de qualquer maneira, você pode escrevê-los em c #.

Você precisará ligar no editor de texto do Visual Studio. Você poderia fazer o Google como fazer isso, ou apenas olhar para um exemplo existente: Uma extensão do Visual Studio para tabestas elásticas . Sua extensão terá que monitorar suas alterações ao fazê-las e enviá-las para o servidor por meio de algum protocolo que você deseja. Você terá que escrever o servidor sozinho, mas na primeira versão tudo o que ele precisa ser capaz de fazer é enviar suas edições para todos os outros que estão usando a extensão. A extensão faria então a edição de todos no editor de todos os outros.

Se alguém se conectar ao servidor com uma versão mais antiga do código, a extensão pode apenas baixar a versão mais recente do servidor. No entanto, se o usuário tiver feito edições enquanto offline (i.e. enquanto não estiver conectado ao servidor), você precisará fazer alguma fusão inteligente. Isso não é trivial, mas sei como fazer isso porque eu fiz isso antes. Se você perguntar muito bem, escreverei o algoritmo de mesclagem para você. Então você só precisará alimentá-lo três arquivos de texto: a base (a versão que foi a última vez em sincronia com o servidor) e as duas versões editadas (aquela editada offline e o mais recente do servidor).

Se você conseguir que isso funcione, você potencialmente criará algo inestimável útil. Por favor, certifique-se de publicar seu trabalho! :)

Outras dicas

Bem, para ver outras pessoas tipo material e, em seguida, ter guerras do cursor com eles no editor já foi feito pela Google Wave.IIRC foi empurrado como fonte aberta ou algo depois que o próprio projeto falhou.Ele cuida de todos os seus problemas de atualização, e é construído em um modelo de atualização subjacente que é bastante robusto e sólido de uma perspectiva de ciência da computação.Ele fornece histórico e todos os tipos de coisas análogas para um sistema de código-fonte.

Você pode implementar o que deseja como um widget de edição especial em cima disso.Se você fizer um bom trabalho, poderá ressuscitar o Google Wave como uma plataforma de edição colaborativa útil e re.

Sobre vs em qualquer lugar, provavelmente, para o tempo que você tentou VSA, (em torno de maio), a versão do software foi lançada candidata 2 (= buggy), então é normal você encontrou alguns problemas com a integração do SVN, assim como tínhamos problemas abertos com Tfs e git.

Atualmente, no mais recente RC3 alguns desses problemas do SVN foram resolvidos, esperamos ter tudo pronto para a versão final em breve

existe uma possibilidade de executar sua própria instância do servidor vs em qualquer lugar em sua LAN, então você realmente não precisa usar nossos servidores públicos, se você é um aluno ou ter um projeto de código aberto, vs qualquer lugar e servidor Livre para você, se não é para uso comercial e há uma pequena taxa que você deve pagar.

Como afirmado pela Timwi Resynchronisation da codificação offline é não-trivial e realmente complexo para implementar, pensamos que um SCM é a ferramenta certa para fazer este trabalho e isso é porque ainda não trabalhamos nessa direção, nossa opinião é menos até que trabalhemos nesta área, você pode usar o SCMs padrão para puxar as alterações mais recentes e mesclar com sua cópia local antes de configurar uma sessão

A VSA simplificará o processo para bootstrap as sessões, permitindo que você verifique as diferenças das cópias remotas do Visual Studio e 2) se houver, mesclá-las em sua cópia local para estar no estado correto, apenas ao abrir a sessão . ("1)" é implementado "2)" está chegando)

O gerenciamento da sessão não é material trivial e realmente complexo, há muitos cenários possíveis e é porque limpamos a sessão quando terminar, no entanto, você pode iniciar a sessão novamente a qualquer momento com apenas um clique ...

Espero que esta informação ajude você e se você tiver mais perguntas, não hesite em contatar vs Anywhere Suporte a qualquer hora

Sobre se você quiser iniciar um projeto para implementar tal plugin, podemos oferecer informações sobre como fazer as coisas, um bom ponto de partida é entender a transformação operacional, pois precisará dessa abordagem para implementar edição simultânea, você também precisará Um protocolo P2P ou cliente / servidor para transferir dados entre os clientes.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top