Alternative al controllo versione professionale [chiuso]


57

Stiamo collaborando con alcuni non programmatori (scrittori) che hanno bisogno di contribuire a uno dei nostri progetti.

Ora non gli piace l'idea di usare Git (o qualsiasi altra cosa) per la versione che controlla il loro lavoro. Penso che ciò sia dovuto al fatto che semplicemente non trovano utile avvolgere la testa attorno ai concetti contorti del controllo della versione. (quando li ho introdotti per la prima volta alla ramificazione e alla fusione, sembravano offenderli.)

Ora, non siamo in grado di educarli o convincerli ad usarlo. Stiamo solo cercando di trovare alternative in modo da ottenere tutto il loro lavoro versionato (che è quello di cui abbiamo bisogno) - e ottengono un flusso di lavoro semplice e si concentrano su ciò che fanno.

Ho avuto alcune idee ...

  • di 'loro di salvare il loro lavoro come file separato ogni volta che fanno delle modifiche non banali, e poi usano un diff dalla nostra parte per tenere traccia delle modifiche.
  • scrivere un programma (in Python) che implementa le "pietre miliari" in CSSEdit in qualche modo.

Informazioni sul progetto:

È un sistema di elaborazione del linguaggio naturale (scritto in C + Python). Abbiamo assunto alcuni scrittori per preparare input per il sistema in diverse lingue. E mentre evolviamo il software, avremmo bisogno di quegli scrittori per apportare modifiche ai loro input (articoli). A volte i cambiamenti sono molto piccoli (una o due parole), altre volte grandi.

Il motivo per cui dobbiamo controllare la versione di tali modifiche è perché ogni piccola / grande modifica nell'input ha il potenziale per cambiare drasticamente l'output del sistema.


15
@rwong - o una wiki con controllo delle versioni, potrebbe funzionare anche.
Joris Timmermans,

4
Aggiungendo al commento di @MadKeithV, che ne dici di un wiki alimentato da git? github.com/github/gollum - Verranno apportate alcune modifiche al flusso di lavoro, si sta tentando di collegare due team. Hai esplorato i loro strumenti attuali? C'è una piccola possibilità che supportino una sorta di controllo della versione e i tuoi scrittori non si sono mai preoccupati di scoprire ..
yannis,

20
È davvero semplicemente. Se pagherai queste persone, di 'loro che possono usare i tuoi strumenti e essere pagati, o se si rifiutano di usare i tuoi strumenti non vengono pagati. Qualsiasi via di mezzo significherà più lavoro da parte tua, dal momento che ciò costa denaro, si equilibra alla ricerca di un gruppo di persone che lavorerà con i tuoi strumenti.
Ramhound,

4
Fossil è un VCS interessante che viene fornito con un Wiki con versione. L'abbiamo usato come un modo per tenere aggiornati i documenti, ma potresti usarlo per "versione" cose come questa.
Ben Brocka,

34
PERCHÉ stavi cercando di introdurre filiali e fonderti con i non tecnici? Vuoi che il loro lavoro sia aggiornato, va bene. Puoi dire loro come lo vuoi salvare. Vuoi che gestiscano i rami e le fusioni, stai andando fuori dal profondo. Avresti dovuto ottenere qualcosa di carino e semplice, come Tortoise *, ed evitare di dire loro tutto ciò di cui non avevano davvero bisogno.
David Thornley,

Risposte:


102

quando li ho introdotti per la prima volta alla ramificazione e alla fusione, sembravano offenderli

Ciò è probabilmente dovuto al fatto che le ramificazioni e le fusioni sono concetti avanzati e infinitamente meno utili che semplicemente per tenere traccia delle modifiche.

Quindi perché non spiegare solo "commit" (salva) e "aggiorna"? Due concetti davvero semplici . Sono sicuro che puoi spiegarlo in meno di 10 minuti.

Se vuoi davvero usare rami separati e cose del genere, puoi farlo da solo senza coinvolgerli.


20
+1. Per i loro scopi, il solo fatto di mantenere una cronologia lineare è un'idea radicale e rivoluzionaria. Penso che sia improbabile che uno scrittore abbia mai davvero bisogno di ramificarsi e fondersi, e se lo facessero, avrebbero bisogno di una mano di un dev da tenere mentre lo gestivano.
Dan Ray,

7
@BillK, hai davvero provato a fonderti con git? Penso che funzioni abbastanza bene, molto meglio che con SVN. (Non sto sostenendo l'uso della fusione dove non è necessario, però.)
svick

10
@Bill K Onestamente, sembra che tu debba fare un po 'di recupero dopo 20 anni su SVN (se anche). La ramificazione e la fusione potrebbero non avere davvero senso per questi scrittori, ma non sono sicuro di come sei riuscito a programmare per 20 anni senza mai ramificare un repository. Ci sono così tanti casi in cui i rami sono buone pratiche e ti facilitano la vita; infatti, rifiutare ciecamente il concetto mostra un cattivo giudizio (IMHO). In SVN la ramificazione è stata una seccatura, ma con l'intelligenza le cose sono diventate davvero facili. Fatti un favore, supera il tuo ego e investi un pomeriggio per imparare le basi di Git. Non te ne pentirai, promesso!
Robin,

6
@ user606723: TortoiseSVN e TortoiseGIT offrono l'integrazione della shell di Windows.
Roy Tinker,

6
Sono abbastanza sicuro che provare a insegnare a ramificare Git e fondersi con i non-tecnici sia una violazione dei diritti umani.
Steve Bennett,

69

Un approccio piuttosto non ortodosso sarebbe usare Dropbox . Chiedi agli autori di salvare i file nella directory di Dropbox e ottieni il controllo delle versioni e il backup gratuitamente. Inoltre non esiste praticamente una curva di apprendimento per gli autori.

Per quanto riguarda git, sembra che alla fine finirai per fornire agli autori le versioni di branch corrette comunque, quindi metti il ​​repository git nel dropbox e gestisci il branching e la fusione per gli autori.


21
Stavo per suggerire la stessa cosa. Nessun motivo per cui non puoi anche trasformare la cartella in Dropbox in un repository git (non è necessario che lo sappia) ed eseguire commit periodici (ad es. Ogni giorno). In questo modo ottieni gratuitamente tutte le belle cose git (diff, log, bisects, ecc.).
Simon Whitaker,

4
Assicurati di utilizzare la versione a pagamento, poiché la versione gratuita salva le versioni per ~ 30 giorni solo se ricordo bene.
DMan,

5
Posso solo -1 una risposta che suggerisce un servizio esterno, introduce un singolo punto di errore e mette i tuoi dati in balia di potenziali intrusi, quando c'è così tanto software utile suggerito in altre risposte qui e le parti coinvolte sono esplicitamente presentate come programmatori capaci.
Sam Hocevar,

4
@DavidThornley: non hai sentito parlare di reali problemi di sicurezza con Dropbox ???
Sam Hocevar,

3
@ Sam Hocevar: OK, ora ho. Sono state quattro ore di vulnerabilità, il che sicuramente non va bene, ma non significa necessariamente che sia una cattiva idea. Ancora una volta, dipende da quanto sia sensibile la scrittura e se è accettabile una piccola possibilità che possa essere vista da un estraneo. (Ovviamente non è adatto per le cartelle cliniche, ma non ho scrupoli a lasciare lì cattiva finzione e progetti software incompiuti.)
David Thornley,

28

Sinceramente la risposta è nella tua modifica: "Abbiamo assunto alcuni scrittori" - a volte devi solo avere una mentalità sanguinaria ... vogliono i tuoi soldi devono fare quello che vuoi a condizione che ciò che vuoi non sia irragionevole.

L'argomento che esponi è l'argomento che hai già avanzato - dobbiamo essere in grado di fare X, Y e Z per far funzionare il prodotto - e per fare ciò abbiamo bisogno che tu lo faccia. Saremo il più possibile di supporto, ma affinché ciò funzioni (e quindi affinché continui come flusso di entrate per te, scrittore), ciò deve accadere.

Tendo a concordare sul fatto che un'adeguata soluzione basata su Wiki sembrerebbe essere una buona corrispondenza, ma la sfida qui è come trovare un compromesso tra il loro flusso di lavoro e le vostre esigenze.

Ripeto il punto chiave - in modo che il vostro progetto per essere un successo è necessario gli articoli da versionato quindi coloro che lavorano sugli articoli devono giocare secondo una serie concordata di regole, se questo non avviene si sarà ottenere bruciato e per estensione, così faranno gli scrittori.


Sono totalmente d'accordo con te. Ma vedi che c'è qualcosa chiamato "gestione" tra noi (il team di programmatori) e gli scrittori. La direzione ha assunto gli scrittori e ci ha detto di lavorare con loro. Il fatto che siano riluttanti ad apprendere il controllo della versione è qualcosa che il management vede come un problema che deve essere "corretto" tra noi (il team) e loro (programmatori).
treecoder,

1
Ho indovinato ... ma poi devi presentare il tuo caso alla direzione, ed è lo stesso caso. Hanno ragione sul fatto che è qualcosa che deve essere "adattato" (interessante scelta della parola) - ma il compromesso è una cosa a doppio senso, devi dare loro qualcosa con cui lavorare, devono lavorare con esso.
Murph,

Yay - downvote senza spiegazione, sempre come quelli.
Murph,

2
@greengit I problemi che devono essere "corretti" tra i team fanno parte della gestione. Delegare la responsabilità a una squadra è pigro, o forse un suggerimento che la direzione preferirebbe l'approccio di quella squadra. Quindi suggerirei di suggerire al management la soluzione che ha più senso per te e di lasciarli preoccupare per tutto il resto.
yannis,

3
Ho la tendenza a presentare questi "aggiustamenti" alla direzione sotto forma di bilancio per le modifiche proposte. "Certo, possiamo evitare il loro uso (git, ...). Dovremo assumere un segretario per farlo per loro. Firma qui e inizierò le interviste lunedì."
BRPocock,

18

In precedenza ho dovuto affrontare una situazione simile come questa. Alla fine abbiamo appena designato uno sviluppatore (me) come punto di contatto per il controllo della versione per la terza parte.

La terza parte mi inviava via e-mail un file zip dei propri file di progetto ogni giorno e farei il check-in per loro. Ho impostato uno spazio di lavoro di progetto separato e l'account svn per loro e decomprimevo i file in quell'area di lavoro sovrascrivendo ciò che era lì e quindi eseguivo il check-in con quell'account.

Non è la cosa più divertente da fare ogni giorno, ma a volte è più importante semplicemente fare il lavoro.

Un vantaggio è che mi ha aiutato a rivedere il loro lavoro per assicurarmi che non stessero controllando il codice errato e i dati che avrebbero rotto la build.


+1 Se fosse possibile, sarebbe "risolto il problema!" per noi. Non è perché siamo una piccola azienda e non penso che suggerire di risparmiare uno sviluppatore in parte o esclusivamente per questo compito mi restituirebbe qualsiasi sorriso dal management (idiota). Davvero, penso alla nostra gestione in quel modo.
treecoder

2
@greengit - Se suggerisci che questa è l'unica soluzione che ritieni possa funzionare, i costi costringeranno la gestione ad assumere persone diverse, che lavoreranno con i tuoi strumenti. Ovviamente puoi spiegare alla direzione che QUALSIASI soluzione, tranne il controllo di versione, COSTERÀ DENARO o stai risolvendo i problemi (e risolvendoli) creati dal lavoro o trascorrendo il tempo extra cercando di prevenire i problemi (a meno che tu non ignori entrambi quei punti chiave , i problemi accadranno, in realtà accadranno qualunque cosa).
Ramhound,

3
@greengit Ovviamente dipenderà da tutto ciò che è coinvolto nel tuo processo, ma nel mio caso mi ci sono voluti meno di 5 minuti al giorno per controllare i file di terze parti. Era la mia soluzione per mitigare lo spreco di tempo cercando di sviluppare un processo e formare la terza parte su di esso.
Alan Barber,

Non dovrebbe essere così difficile. Una persona è l'interfaccia dagli autori al sistema di controllo della versione. Sanno di sottoporgli tutte le modifiche. Non dovrebbe impiegargli più di un minuto o due per lasciare cadere le modifiche sul posto e impegnarle.
Dan Ray,

@greengit - Questa sarebbe stata la mia risposta. Sì, ci vorrebbe del tempo per fare un lavoro utile. Scrivere un sistema personalizzato (che sembri desideroso di fare) richiederebbe più tempo. E gli scrittori si lamenterebbero ancora.
Mike Baranczak,

18

SparkleShare è un clone di dropbox basato su git, penso che soddisfi le tue esigenze.

SparkleShare crea una cartella speciale sul tuo computer. È possibile aggiungere cartelle (o "progetti") ospitate in remoto a questa cartella. Questi progetti verranno automaticamente sincronizzati con l'host e tutti i tuoi colleghi quando qualcuno aggiunge, rimuove o modifica un file.

... ecco alcuni esempi di cosa fa bene e meno bene con le faccine:

grande

  • Modifica frequente dei file di progetto, come testo, documenti di Office e immagini
  • Tracciamento e sincronizzazione dei file modificati da più persone
  • Ripristino di un file in qualsiasi punto della sua cronologia
  • Prevenire lo spionaggio dei file sul server mediante la crittografia

Non così eccezionale

  • Backup completi del computer
  • Archiviazione della tua raccolta di foto o musica
  • Grandi file binari che cambiano spesso, come progetti di editing video ...

Aggiornamento (novembre 2015) : il progetto sembra essere abbandonato (ultima versione di aprile 2014).


Molto promettente, ma forse un po 'immaturo. Terrò sicuramente d'occhio questo però.
Zsolt Török,

13

Se è possibile fornire un'area di lavoro preparata con un utilizzo VCS trasparente , utilizzeranno VCS. Non insegnare ai non programmatori ad usare VCS alla maniera del programmatore

Basta trovare l'editor con supporto VCS incorporato, configurarlo e mostrare ulteriori semplici passaggi nelle loro opere.

Solo un esempio: Editplus conosce Subversion, ha la capacità di eseguire operazioni SVN di base all'interno della finestra dell'editor. L'ultimo Editplus può persino usare TortoiseGIT per l'integrazione con Git

Modifica : trovata una soluzione alternativa in qualche modo: EasySVN , che, essendo correttamente configurato, monitora la copia di lavoro ed esegue autocommit e automerge, consentendo di utilizzare qualsiasi strumento di authoring per l'utente finale e qualsiasi formato di documento


11

Che dire di impostare un WebDAV ?

Gestirà automagicamente la cronologia delle versioni in linea retta per loro. Tutto quello che devono fare è connettersi al server come se fosse un'unità di rete e ogni salvataggio sarà un commit.


+1 per WebDAV. Davvero non pensavo a quell'opzione. Quanto pensi che sarà difficile distribuire e mantenere un server WebDAV (+ flusso di lavoro)
treecoder

È davvero semplice, si installa apache, sovversione, un repository. Quindi installa il modulo apache e lo configura e il gioco è fatto.
Malfist,

-1 perché "automagicamente" non è una parola.
Dreftymac,


1
Forse, puoi rendere questa risposta più esplicita: imposta Subversion + Apache + WebDAV su un server e monta la condivisione WebDAV dai client non sviluppatori. Di 'agli utenti di salvare che lavorano sulla condivisione WebDAV almeno una volta al giorno.
gennaio

7

documenti Google

Google Documenti potrebbe fare quello che vuoi. File > See Revision Historyti consentirà di tenere traccia delle modifiche.

Hai anche il problema di consegnare i file avanti e indietro gratuitamente; condividi il documento tra tutti.

Infine, è facile da usare; gli autori non devono nemmeno sapere che sta avvenendo il controllo delle versioni.


6

OS Agnostic

Scrivi un programma Python su cui puoi trascinare e rilasciare un file, quel programma può fare git adde git commite cosa no e non devono mai affrontarlo.

o

Usa un filesystem basato su WebDav che puoi montare sul loro computer e chiedi al server di fare le gitcose in modo trasparente.

OSX / Linux

Scrivi un plugin FUSE basato su Python che prende i file e li impegna a git. Quindi possono semplicemente aprire e salvare in modo trasparente dal filesystem montato. Ci sono alcune risorse FUSE per Windows , ma probabilmente non vale nemmeno la pena ingannarle.

finestre

Potresti scrivere del codice per utilizzare i driver del filtro FileSystem per fare le gitcose in modo trasparente .


5

Ah, le gioie dei non programmatori si agitano. Suggerirei di creare un ambiente git / mercurial per loro. Di 'loro di salvare tutto in un formato che il repository può gestire. Con tortoisegit o tortoisehg , non hanno bisogno di sapere come funziona il repository. Controllano solo se hanno un punto esclamativo nella directory del progetto, fanno clic con il pulsante destro del mouse sul file in questione e fanno clic su commit. Scrivi una sinossi di modifiche (sono scrittori, vero?) E il gioco è fatto!

Un ulteriore passo nel flusso di lavoro per loro, ma nulla riguardo alla fusione / ramificazione / cose interessanti. L'ambiente pre-costruito è già impostato per essere nel ramo degli scrittori, quindi non vedono il codice. Chiedi a uno script di sincronizzarli automaticamente ogni giorno. Successivamente, dopo che sono stati abituati a eseguire il commit, puoi mostrare loro funzionalità extra. La possibilità di vedere cosa è cambiato quando è così utile da non poterne fare a meno, una volta che lo hai nascosto nel loro flusso di lavoro.


5
Una cosa che ho capito è che tutti gli scrittori non tecnici (YMMV) considerano inutile il loro lavoro precedente , una volta che ne hanno apportato delle modifiche. Pensano che il lavoro aggiornato (articolo o tutto ciò che scrivono) sia il migliore, ed è sciocco mantenerne le versioni precedenti. Anche se nel nostro caso, abbiamo almeno spiegato loro con successo perché anche noi abbiamo bisogno della storia.
treecoder,

@greengit forse. Se dimostri come li stai adattando al management, in che modo questo semplice e facile passaggio ti aiuta e in che modo questo risparmia / fa guadagnare all'azienda, allora dovranno farlo comunque. Il business è guidato dai profitti, quindi informa il capo che questo integra gli autori nella pipeline tecnica e consente di risparmiare denaro sui costi di integrazione, i backup (si esegue il backup del repository, giusto?) E il passaggio delle informazioni.
Spencer Rathbun l'

+1 Abbiamo anche impostato i nostri coordinatori di progetto e le persone del servizio clienti per utilizzare TortoiseSVN. Dopo la spiegazione iniziale (e aiutandoli con il checkout iniziale), non hanno avuto problemi a eseguire il commit delle loro versioni modificate (principalmente documenti di ufficio e immagini di modelli). Gli piaceva anche che avessero automaticamente l'ultima versione se un collega avesse cambiato qualcosa.
sleske,

3

Che dire di Share Point? So che non è popolare nei mondi di sviluppo, ma se i tuoi scrittori usano Windows come sistema operativo funzionerà bene e non sapranno davvero che stanno usando il controllo della versione (un grande vantaggio per il mio lavoro).

Questa soluzione impedisce loro di affrontare qualsiasi cosa che li spaventerebbe molto, in quanto sembra essere sciatto di cose nuove.


+1 poiché questo è ciò che il nostro team sta già facendo e funziona.
sq33G

Preferisco lavorare con un adeguato sistema di controllo della versione su SharePoint, dove si trova parte della documentazione della nostra azienda, perché il caricamento di nuove versioni su SharePoint richiede più lavoro.
Chris Morgan,

2

Potresti impostare uno strumento che monitora il file system in cui gli autori stanno salvando i loro file e fare un commit automatico ogni volta che effettuano un salvataggio?

Se lo metti su una condivisione di rete potresti fare tutta la configurazione senza coinvolgerli affatto; ma ogni volta che hanno fornito una versione aggiornata per l'utilizzo da parte del tuo team, viene aggiunto a git per te.


1

Hai visto Plastic SCM. Stanno cercando di renderlo più semplice da usare

Se desideri solo backup con versione, puoi utilizzare Dropbox oppure puoi configurare il servizio di backup di Windows. Oppure puoi installare Crashplan o un altro prodotto simile.


+1 per avermi indicato la nuova offerta commerciale nel regno DVCS
Roland Tepp il

1

Per il Mercurial DVCS, esiste un'interfaccia utente chiamata EasyMercurial , il cui obiettivo dichiarato è esplicitamente quello di fornire una visione semplice delle operazioni di controllo della versione di base.

EasyMercurial vuole essere:

  • semplice da insegnare e da imparare indicativo dell'attuale stato del repository, usando una rappresentazione del grafico storico
    • riconoscibilmente vicino al normale flusso di lavoro da riga di comando per Mercurial coerente su più piattaforme

Non stiamo cercando di produrre il miglior client Mercurial per uno scopo. Incoraggiamo attivamente gli utenti a passare ad altri clienti mentre le loro esigenze si evolvono. L'obiettivo è semplicemente quello di fornire qualcosa di accessibile ai principianti in piccoli gruppi di progetto che lavorano con un repository remoto condiviso.

Consiglierei di provarlo.


1

Ho dovuto lavorare molte volte con non programmatori (per lo più artisti grafici, e se i tuoi scrittori hanno la minima idea di come gestire i file di lavoro degli artisti, allora sei pronto per ... hmmm .... divertimento .. .). Esistono tre possibili approcci:

  1. Fai finta che siano programmatori, cerca di insegnare loro come usare il controllo versione. Questo non funzionerà e avrai combattimenti costanti.
  2. Scrivi loro uno strumento molto semplice che afferra la versione corrente e la attacca da qualche parte in modo che possano riavvolgere i file di ieri, se necessario. Questo è possibile, e l'ho fatto per un team di creatori di DVD (creare menu, grafica, cose del genere) molti anni fa con un certo successo: lo strumento che ho scritto era un wrapper con un clic per PkZip (puoi vedere qualche tempo fa) e ha appena compresso la directory di lavoro e chiamato l'archivio per la data + ora.
  3. Prendi il controllo di ciò che producono da soli. Chiarire che i loro file devono essere consegnati a un programmatore e diventare parte del progetto solo quando il programmatore accetta i file: il programmatore quindi li controlla nel controllo della versione e il contenuto viene gestito in modo professionale.

Personalmente penso che l'opzione 3 sia la strada da percorrere. Significa un po 'di dolore e irritazione per chiunque debba prendere le consegne dei file e farle controllare, ma molto meno di qualsiasi altra opzione.

Vorrei anche dire, essere consapevoli del fatto che i non programmatori consegneranno i file con qualsiasi vecchio nome di file che si possa pensare. Le convenzioni di denominazione sono stranamente estranee a loro. Ti daranno un file chiamato "Picture" o qualcosa del genere e poi quando dici loro le cose che non vanno, ti darà un file chiamato "Picture_Final", che ha corretto solo circa 3 dei guasti. Quando lo fai notare otterrai un altro file, chiamato "Picture_NewFinal", e poi (se sei fortunato) "Picture_NewFinal2", anche se è possibile che a questo punto eliminino qualsiasi senso di sviluppo storico e lo chiamino "Icona chiave inglese cosa".

Ancora una volta puoi provare a far rispettare una convenzione di denominazione, il che significa dire loro in anticipo come chiamare ogni file, oppure puoi passare ore a decodificare e rinominare ciò che ti inviano. Qui direi che vuoi comunque il foglio di calcolo per il tuo buonsenso, quindi prova a convincerli a seguirlo: semplicemente non essere sorpreso quando non lo fanno.

Spero che aiuti - buon divertimento!


0

Se c'è qualche possibilità che due di loro debbano lavorare contemporaneamente sullo stesso target E se riesci a gestire tutto il loro lavoro in file di testo, proverei documenti Google condivisi.

Ha una straordinaria capacità multi-editor / collaborazione - di gran lunga la migliore che abbia mai visto. Sono inoltre dotati di versione completa e possono essere esportati come file di testo.

Ma quelli sono due if piuttosto grandi.


0

Lasciali lavorare in una cartella, salvando i file come al solito.

Una volta al giorno (o settimana, ecc.) Copia il contenuto di quella cartella su backup_dd_mm_yyyy La maggior parte del codice sorgente dei sistemi occupa una quantità banale di spazio dato lo spazio disponibile in questi giorni.

La copia può essere eseguita da te, loro, una terza parte, uno strumento o uno script.

Questo limita la perdita a un giorno, dà una storia, è trasparente per loro.

Non perfetto per entrambe le parti, ma una risposta che cerca di colpire una via di mezzo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.