Alternativas para o Controle de Versão Profissional [closed]

57

Estamos nos unindo a alguns não programadores (escritores) que precisam contribuir para um de nossos projetos.

Agora, eles simplesmente não gostam da idéia de usar o Git (ou qualquer outra coisa) para controlar o seu trabalho. Eu acho que isso é porque eles simplesmente não acham que vale a pena embrulhar suas cabeças em torno dos conceitos distorcidos do controle de versão. (quando os apresentei pela primeira vez à ramificação e fusão - eles pareciam ofendê-los).

Agora, não podemos educá-los ou convencê-los a usá-los. Estamos apenas tentando encontrar alternativas para que tenhamos todo o trabalho deles versionado (que é o que precisamos) - e eles têm um fluxo de trabalho fácil e se concentram no que fazem.

Eu tenho algumas idéias ...

  • diga-lhes para salvar o trabalho como um arquivo separado toda vez que fizerem alterações não triviais e, em seguida, usar um diff do nosso lado para acompanhar as alterações.
  • escreva um programa (em Python) que implemente os "marcos" no CSSEdit de alguma forma.

Sobre o projeto:

É um sistema de processamento de linguagem natural (escrito em C + Python). Contratamos alguns escritores para preparar insumos para o sistema em diferentes idiomas. E à medida que evoluímos o software, precisaríamos desses escritores para fazer alterações em suas entradas (artigos). Às vezes as mudanças são muito pequenas (uma palavra ou duas) e outras vezes grandes.

A razão pela qual precisamos controlar a versão dessas mudanças é porque cada pequena / grande alteração na entrada tem o potencial de alterar drasticamente a saída do sistema.

    
por treecoder 05.07.2015 / 23:17
fonte

17 respostas

101

when I first introduced them to branching and merging -- they looked like I was offending them

Provavelmente, isso ocorre porque a ramificação e a mesclagem são conceitos avançados e infinitamente menos úteis do que simplesmente acompanhar as alterações.

Então, por que não explicar apenas "commit" (salvar) e "atualizar"? Dois conceitos muito simples . Tenho certeza que você pode explicar isso em menos de 10 minutos.

Se você realmente quiser usar ramificações separadas e coisas do tipo, você pode fazer essa parte sozinho sem envolvê-las.

    
por 08.12.2011 / 16:04
fonte
69

Uma abordagem pouco ortodoxa seria apenas usar o Dropbox . Peça aos autores que salvem os arquivos no diretório dropbox e obtenham o controle de versão e o backup gratuitamente. Além disso, basicamente não há curva de aprendizado para os autores.

Para o git, parece que no final você vai acabar fornecendo aos autores as versões corretas de qualquer maneira, então coloque o repositório do git na caixa de depósito e cuide da ramificação e fusão para os autores.

    
por 08.12.2011 / 10:40
fonte
28

Na verdade, a resposta está na sua edição: "Contratamos alguns escritores" - às vezes você só precisa ter uma mentalidade sangrenta ... eles querem seu dinheiro para fazer o que você deseja fornecer que o que você quer não é irracional.

O argumento que você faz é o argumento que você já avançou - precisamos ser capazes de fazer X, Y e Z para fazer o produto funcionar - e para fazer isso precisamos de você fazer isso. Seremos tão solidários quanto pudermos, mas para que isso funcione (e, portanto, para que continue como um fluxo de renda para você, o escritor) isso tem que acontecer.

Eu tenho a tendência de concordar que uma solução apropriada baseada no Wiki parece ser uma boa combinação - mas o desafio aqui é como encontrar um compromisso entre o fluxo de trabalho e as suas necessidades.

Vou repetir o ponto chave - para que o seu projeto seja um sucesso, você precisa dos artigos a serem versionados, portanto, quem trabalha nos artigos tem que jogar por um conjunto de regras, se isso não acontecer você irá se queimar e por extensão os escritores também.

    
por 08.12.2011 / 12:53
fonte
18

Eu tive que lidar com uma situação semelhante como esta antes. No final, acabamos de designar um desenvolvedor (eu) como o ponto de controle de versão de contato para o terceiro.

A terceira parte me enviava um arquivo zip de seus arquivos de projeto todos os dias e eu fazia o checkin para eles. Eu configurei um espaço de trabalho do projeto separado e svn conta para eles e iria descompactar os arquivos para o espaço de trabalho sobrescrevendo o que estava lá e, em seguida, fazer o check-in em conta.

Não é o mais divertido ter que fazer todos os dias, mas às vezes é mais importante apenas fazer o trabalho.

Mais uma vez, isso me ajudou a revisar o trabalho deles para garantir que eles não verificassem código e dados inválidos que poderiam quebrar a compilação.

    
por 08.12.2011 / 14:46
fonte
18

SparkleShare é um clone dropbox baseado em git, eu acho que se adapta às suas necessidades.

SparkleShare creates a special folder on your computer. You can add remotely hosted folders (or "projects") to this folder. These projects will be automatically kept in sync with both the host and all of your peers when someone adds, removes or edits a file.

...here's a few examples of what it does well and less well with smiley faces:

Great

  • Frequently changing project files, like text, office documents, and images
  • Tracking and syncing files edited by multiple people
  • Reverting a file to any point in its history
  • Preventing spying on your files on the server using encryption

Not so great

  • Full computer backups
  • Storing your photo or music collection
  • Large binary files that change often, like video editing projects...

Atualização (novembro de 2015) : o projeto parece estar abandonado (última versão de abril de 2014).

    
por 02.11.2015 / 13:46
fonte
13

Se você puder fornecer espaço de trabalho preparado com uso de transparente VCS, eles usarão o VCS. Não ensine não-programadores a usar o VCS da maneira do programador

Basta localizar o editor com suporte a VCS incorporado, configurá-lo e mostrar passos fáceis adicionais em seus trabalhos.

Apenas um exemplo - o Editplus sabe sobre o Subversion, tem a capacidade de executar a operação básica do SVN dentro da janela do editor. O mais recente Editplus pode até usar o TortoiseGIT para integração com o Git

Editar : encontrou uma solução alternativa: EasySVN , que, sendo configurado corretamente, monitora a cópia de trabalho e realiza autocommit e automerge, permitindo usar qualquer ferramenta de autoria para o usuário final e qualquer formato de documento

    
por 08.12.2011 / 19:05
fonte
11

Que tal configurar um WebDAV ?

Ele manipulará automaticamente o histórico de versão de linha reta para eles. Tudo o que eles precisam fazer é se conectar ao servidor como se fosse uma unidade de rede e cada salvamento será um commit.

    
por 08.12.2011 / 19:24
fonte
6

Google Docs

O Google Docs pode fazer o que você deseja. File > See Revision History permitirá que você acompanhe as alterações.

Você também tem o problema de entregar e recuperar arquivos de graça; apenas compartilhe o documento entre todos.

Finalmente, é fácil de usar; os escritores nem precisam saber que há versões acontecendo.

    
por 08.12.2011 / 20:19
fonte
6

Agnóstico do SO

Escreva um programa em Python para o qual você pode arrastar e soltar um arquivo, esse programa pode fazer o git add e o git commit e o que não e eles nunca terão que lidar com isso.

ou

Use um sistema de arquivos baseado no WebDav que você pode montar em sua máquina e faça o servidor fazer o git de forma transparente.

OSX / Linux

Escreva um plug-in FUSE baseado em Python que receba os arquivos e os confirme para o git. Então eles podem simplesmente abrir e salvar do sistema de arquivos montado de forma transparente. Existem alguns recursos do FUSE for Windows , mas eles provavelmente nem valem a pena .

Windows

Você pode escrever um código para usar Drivers de filtro do sistema de arquivos para transparentemente fazer o git stuff.

    
por 08.12.2011 / 20:21
fonte
5

Ah, as alegrias dos não codificadores estão se debatendo. Eu sugiro obter um ambiente git / mercurial configurado para eles. Diga-lhes para salvar tudo em um formato que o repositório possa manipular. Com tortoisegit ou tortoisehg , eles não precisam saber como o repositório funciona. Eles apenas verificam se eles têm um ponto de exclamação no diretório do projeto, clicam com o botão direito do mouse no arquivo problemático e clicam em confirmar. Digite uma sinopse de mudanças (eles são escritores, certo?) E está pronto!

Um passo extra no fluxo de trabalho para eles, mas nada sobre fusão / ramificação / coisas legais. O ambiente pré-construído já está configurado para estar no ramo de escritores, para que eles não vejam código. Peça para um script sincronizar automaticamente todos os dias. Posteriormente, depois que eles estiverem acostumados a confirmar, você poderá mostrar esses recursos extras. A capacidade de ver o que mudou quando é tão útil é que eles não conseguirão passar sem isso, quando você inserir o fluxo de trabalho deles.

    
por 08.12.2011 / 15:04
fonte
3

E quanto ao Share Point? Eu sei que não é popular nos mundos de desenvolvimento, mas se seus escritores estão usando o Windows como um sistema operacional, ele funcionará bem e eles realmente não saberão que estão usando o controle de versão (uma grande vantagem para o meu trabalho).

Esta solução também os impede de lidar com qualquer coisa que os assuste muito, pois parece que eles estão assustados com coisas novas.

    
por 08.12.2011 / 15:45
fonte
2

Você poderia configurar uma ferramenta que monitora o sistema de arquivos em que os gravadores estão salvando seus arquivos e fazer um commit automático toda vez que eles salvam?

Se você colocá-lo em um compartilhamento de rede, poderá fazer toda a configuração sem envolvê-los; mas toda vez que eles fornecessem uma versão atualizada para sua equipe usá-la, você seria adicionado ao git para você.

    
por 08.12.2011 / 15:49
fonte
1

Você viu o Plastic SCM? Eles estão tentando tornar mais simples o uso

Se você quiser apenas backups com versão, você pode usar o Dropbox ou você pode configurar o serviço de backup do Windows. Ou você pode instalar o Crashplan ou outro produto similar.

    
por 08.12.2011 / 15:15
fonte
1

Para o Mercurial DVCS, existe uma interface de usuário chamada EasyMercurial , cujo objetivo declarado é fornecer explicitamente um visão simples das operações básicas de controle de versão.

EasyMercurial is intended to be:

  • simple to teach and to learn indicative of the actual repository state, using a history graph representation
    • recognisably close to normal command-line workflow for Mercurial consistent across platforms

We are not trying to produce "the best" Mercurial client for any one purpose. We actively encourage users to move on to other clients as their needs evolve. The aim is simply to provide something accessible for beginners in small project groups working with a shared remote repository.

Eu recomendaria tentar.

    
por 08.12.2011 / 15:53
fonte
1

Eu tive que trabalhar com não-programadores muitas vezes (principalmente artistas gráficos, e se seus escritores têm tão pouca idéia de como gerenciar arquivos de trabalho como artistas, então você está em ... hmmmm .... Diversão...). Existem três abordagens possíveis:

  1. Finja que eles são programadores, tente ensiná-los a usar o controle de versão. Isso não vai funcionar e você terá lutas constantes.
  2. Escreva-lhes uma ferramenta muito simples que apenas pega a versão atual & coloca-o em algum lugar para que ele possa voltar aos arquivos de ontem, se necessário. Isso é possível, e eu fiz isso para uma equipe de criadores de DVD (fazendo menus, gráficos, todo tipo de coisa) muitos anos atrás com algum sucesso: a ferramenta que escrevi foi um invólucro de um clique para o PkZip (você pode ver isso há algum tempo atrás) e acabou de fechar o diretório de trabalho e nomeou o arquivo para a data + hora.
  3. Assuma o controle do que eles mesmos produzem. Deixe claro que seus arquivos precisam ser entregues a um programador e só se tornam parte do projeto quando o programador aceita os arquivos: o programador então os verifica no controle de versão e o conteúdo é gerenciado de forma profissional.

Pessoalmente, acho que a opção 3 é o caminho a percorrer. Isso significa alguma dor & irritação para quem tem que levar as entregas de arquivo e obtê-los check-in, mas muito menos do que qualquer outra opção.

Eu também diria, esteja ciente de que os não-programadores entregarão arquivos com qualquer nome de arquivo antigo que você possa imaginar. As convenções de nomenclatura são estranhamente estranhas para elas. Eles lhe darão um arquivo chamado "Picture" ou algo assim e, quando você disser a eles que estão errados, ele fornecerá um arquivo chamado "Picture_Final", que corrige apenas 3 das falhas. Quando você apontar isso, você receberá outro arquivo, chamado "Picture_NewFinal", e então (se você tiver sorte) "Picture_NewFinal2", embora seja possível que neste momento descartem qualquer senso de desenvolvimento histórico e chamem-no de "Spanner Icon". coisa ".

Novamente, você pode tentar impor uma convenção de nomenclatura, o que significa dizer a eles antecipadamente como cada arquivo deve ser chamado ou passar horas desmarcando & renomeando o que eles mandam para você. Aqui eu diria que você quer a planilha para sua própria sanidade de qualquer maneira, então tente fazer com que ela a siga: apenas não fique surpreso quando eles não o fizerem.

Espero que ajude - divirta-se!

    
por 09.12.2011 / 01:11
fonte
0

Se houver alguma chance de que dois deles precisem trabalhar no mesmo destino de uma vez E se você puder lidar com todo o trabalho deles em arquivos de texto, eu tentarei compartilhar documentos do google.

Tem capacidade impressionante de multi-editor / colaboração - de longe o melhor que já vi. Eles também são versionados completos e podem ser exportados como arquivos de texto.

Mas esses são dois grandes sós.

    
por 08.12.2011 / 17:34
fonte
0

Deixe-os trabalhar em uma pasta, salvando os arquivos normalmente.

Uma vez por dia (ou semana, etc) copie o conteúdo dessa pasta para backup_dd_mm_yyyy A maioria dos códigos-fonte dos sistemas ocupa uma quantidade trivial de espaço, dado o espaço disponível atualmente.

A cópia pode ser feita por você, por eles, por terceiros, por uma ferramenta ou por um script.

Isso limita a perda a um dia, dá um histórico, é transparente para eles.

Não é perfeito para nenhuma das partes, mas uma resposta que busca atingir um meio termo.

    
por 26.06.2013 / 00:37
fonte