Qual è il modo più efficace di lavorare con un amico nello stesso gioco?


29

Abbiamo bisogno di qualcosa in cui possiamo estrarre i file, modificarli, ricontrollarli e quindi compilare da essi.

Qualcosa di simile a Google Documenti in cui possiamo modificare lo stesso codice contemporaneamente sarebbe l'ideale.

Usiamo entrambi Visual Studio 2010.


2
Mi sono sempre chiesto perché nessuno ha fatto (o almeno non ho trovato) una modifica simile a Docs per il codice. Immagino che ci siano alcune difficoltà intrinseche come il completamento del codice e il fatto che il codice debba essere compilato, ma non sembrano assolutamente impossibili da superare con un certo coordinamento (e forse trucchi come strategie di fusione del codice ritardate). Immagino che siano un Problema REALE in grandi progetti. Dovrò comunque cercare strumenti di codifica collaborativa (o
crearne

1
@kaoD SubEthaEdit offre quel tipo di funzionalità in base al file (non sono sicuro di come gestisca grandi quantità di file).
michael.bartnett,

Se qualcuno può trovarmi un programma come questo per windows e c # ti darò un cookie.
steakbbq,

1
Emacs può farlo, ma è goffo: emacswiki.org/emacs/CollaborativeEditing ; o MoonEdit: moonedit.com (anche se non so se ha una modalità C #); oppure Gobby: en.wikipedia.org/wiki/Gobby
tra il

Quanto sarebbe difficile scrivere un nuovo compilatore IE sublime? Probabilmente sarebbe solo più semplice sviluppare un plugin per sublime, giusto?
steakbbq,

Risposte:


19

Come ho affermato in un commento alla tua domanda, sono molto curioso per il vero editing collaborativo . Ho fatto ricerche qualche tempo fa, ma la maggior parte delle soluzioni non soddisfaceva gli standard: o erano editor di testo semplice con evidenziazione della sintassi, avevano costi folli o non erano disponibili multipiattaforma (come SubEthaEdit ...)

Fino a quando mi sono imbattuto in Saros ! È un plugin Eclipse pulito, quindi potrebbe essere facile da integrare con il flusso di lavoro corrente. Puoi guardare il loro video dimostrativo , è abbastanza impressionante. È molto ben pensato per un vero ambiente di editing collaborativo e ha alcune caratteristiche chiave ben pensate. Supporta un numero arbitrario di partecipanti, sincronizzazione completa del progetto, modifica in tempo reale con marcatori ed evidenziazione (ala Google Docs), seguendo la visione del tuo partner, diversi metodi di consapevolezza dei partecipanti e molto altro (puoi persino condividere il tuo schermo usando questo plugin. ) E apparentemente si integra con molti altri plugin Eclipse!

Devo ancora provarlo da solo, ma è uno dei pochi progetti ancora mantenuti e sembra molto promettente. Provalo e fammi sapere (leggi queste linee guida prima.) Prometto che tornerò qui e pubblicherò le mie impressioni come commento quando provo io stesso.

EDIT: Inoltre, come ha sottolineato Gustavo in un commento, anche Cacoo potrebbe essere utile. È uno strumento di collaborazione online per disegnare UML (in realtà, qualsiasi tipo di diagramma.) Saros supporta una lavagna, ma non c'è niente come uno strumento di diagramma se si vuole evitare la goffaggine.


3
Le persone hanno dato molte risposte, tutte sui sistemi di versioning, ma penso che questa sia la vera risposta alla domanda. +1 per l'editing collaborativo. A proposito, prova Cacoo (google it) È uno strumento collaborativo per creare UML, mi ha aiutato in una serie di progetti, potrebbe integrare la tua risposta.
Gustavo Maciel,

1
@ Gustavo-Gtoknu davvero un ottimo strumento, ti dispiace se aggiorno la risposta con esso?
Kaao

2
Fallo ora! : D La risposta merita.
Gustavo Maciel,

Questo è fantastico, tuttavia Eclipse è per Java? Sto correndo c #
steakbbq il

@steakbbq ci sono alcuni plugin che forniscono supporto per C # ( Emonic e Improve ) ma sfortunatamente sembrano non avere supporto per il debugging e il refactoring.
Kaao,

36

"abbiamo solo bisogno di qualcosa in cui possiamo estrarre i file, modificarli e poi ricontrollarli e creare dallo stesso set di file"

Usa controllo versione; un sistema di controllo della versione (VCS) è esattamente quello che hai descritto, con l'aggiunta del bonus che memorizza una cronologia di ogni modifica apportata da chiunque. Esistono molti sistemi di controllo della versione più diffusi:

http://subversion.apache.org/

http://mercurial.selenic.com/

http://git-scm.com/

Non uso Visual Studio personalmente, ma sono completamente certo che Visual Studio abbia il supporto per tutti questi sistemi di controllo della versione.


11
Ho appena distribuito un host Git / HG privato gratuito in chat: bitbucket.org (gratuito per un massimo di 5 collaboratori). Inoltre HG è più adatto in quanto ha plugin che si occupano di grandi contenuti binari (progetti di contenuto).
Jonathan Dickinson,

2
+1 A VCS è la strada da percorrere. Uso AnkhSVN come plug-in Visual Studio per Subversion.
Richard Marskell - Drackir,

2
+1 qui. la mia approvazione personale è TortoiseSVN. Per l'hosting (supponendo open source) la mia raccomandazione è Google Code
PlayDeezGames


2
Per favore, non sovversione. Il controllo della versione distribuita è totalmente semplice per le persone che non sono abituate a lavorare con sistemi centralizzati. Le persone abituate a sovversione si perdono e si confondono.
rjmunro,

9

Per il mio team, utilizziamo tre programmi a seconda di ciò su cui dobbiamo lavorare:

  • TortoiseSVN per il codice (cerca di far usare ai programmatori lo stesso IDE, standardizzare le convenzioni e incoraggiare un buon commento)
  • Dropbox per contenuti multimediali (per modelli / sprite / file audio, consente agli sviluppatori di lavorare localmente fino a quando artisti / compositori / modellatori non sono pronti per la consegna)
  • GoogleDocs per la documentazione (per documenti di progettazione / mockup / pitch di solito per designer, manager e produttori)

Per coordinare gli sforzi dei diversi membri (che lavorano in momenti diversi) utilizziamo il sistema di biglietteria di Assembla . In questo modo tutti vengono aggiornati sullo stato dell'intero progetto o su una strada particolare a loro scelta. Usa anche la comunicazione Skype / Google Hangout / Face-to-face per assicurarti che tutti siano sulla stessa pagina almeno una volta a settimana.

Questo metodo funziona in genere quando un team è composto da 3-5 persone che hanno ruoli stabiliti (programmatore, artista, modellista, designer ecc.). Se questo non funziona, prova altri metodi o combina gli aspetti lavorativi per crearne uno tuo. In bocca al lupo!


Ho parlato solo del controllo della versione per il codice perché è l'unico aspetto dello sviluppo di cui mi ha chiesto, ma il mio studio utilizza anche Dropbox e Google Documenti per gli stessi scopi di questa risposta.
jhocking

Ottima combinazione.
Bill K,

7

Sembra che tu voglia o drop box, un sistema di controllo della versione o entrambi.

Dropbox è il più conveniente. Apporta le modifiche e salva e Dropbox si sincronizzerà con le modifiche sulla tua macchina amici. Non pensare che 2 persone possano lavorare contemporaneamente sul file senza sovrascrivere a vicenda.

Tuttavia, ti consiglio di utilizzare un sistema di controllo versione. Subversion , GIT e Mercurial sono attualmente i grandi 3. Ci sono molti vantaggi nell'uso di un VCS: inclusa la possibilità di automatizzare backup, rollback e checkout del tuo codice su qualsiasi computer che ha accesso al tuo server.

Avendo usato i 3 di cui ho parlato, ho trovato Subversion il modo più semplice per iniziare e Assembla consente di creare repository SVN o GIT privati ​​gratuiti .


9
Non mi piace davvero Dropbox per questo tipo di cose. Se usi uno dei prodotti Tortoise *, ha un tipo simile di integrazione con Windows Explorer, ma puoi controllare il commit / push / pull / merge in modo da non avere il problema "2 persone che si sovrascrivono".
Jimmy,

2
Nemmeno io, ecco perché raccomando un VCS. Tuttavia, non c'è quasi nessuna curva di apprendimento e hai subito un backup, quindi ho considerato che vale la pena menzionare.
ClassicThunder

9
Consiglio di non utilizzare DropBox al posto di un sistema di controllo della versione. Se due persone modificano lo stesso file nello stesso lasso di tempo, DropBox duplicherà il file. Per il codice sorgente, questo di solito è indesiderabile e più di una seccatura che usare solo un sistema di controllo del codice sorgente.
John McDonald,

Subversion non è più facile da usare: le persone che erano solite trovare lo confondono tanto quanto le persone che vanno nell'altra direzione.
rjmunro,

Non ho mai detto di si. Ho detto per me che è stato il più facile da imparare dopo aver imparato. È stupido pronunciare frasi soggettive come "Subversion non è più facile da usare" in termini assoluti.
ClassicThunder

5

Come menzionato in altre risposte, un VCS è la strada da percorrere. Git è il mio preferito, ma potrebbe essere solo perché è stato il primo che ho usato.

Ho trovato questo libro online molto utile per imparare Git. http://progit.org/book/ Qualunque sia il VCS che segui, vale la pena dedicare qualche ora a capire come usarlo.

Un'altra cosa degna di nota: i VCS sono ottimi per il codice sorgente (o qualsiasi file di testo), ma la memorizzazione di immagini e file audio può gonfiare inutilmente il tuo repository. Alcune persone raccomandano un repository separato per questo, ma trovo che Dropbox funzioni bene per questo tipo di risorse.

Per un progetto scolastico, abbiamo utilizzato una cartella Dropbox pubblica e utilizzato questo script per mantenere aggiornate le nostre risorse https://github.com/dc2011/td/blob/master/tools/extrafiles.sh

Controlla l'hash md5 del file in Dropbox rispetto all'hash del file già presente sul disco (se esiste) in modo che vengano scaricati solo i file nuovi o modificati.


1
sì, usavo svn. Adesso uso sempre Git. Sebbene a molte persone non piaccia la riga di comando, trovo che sia davvero comodo. Su Windows uso Console, che avvolge l'ambiente git-bash. Su OSx è solo Terminale con il tema Solarized.
Prozaker,

Sono d'accordo, vivo nel terminal se posso! A volte c'è una curva di apprendimento leggermente più ripida, ma rende l'automazione molto più semplice. Se usi OSX su base regolare, dai un'occhiata a iTerm2. Ha il supporto per 256 colori, così come la modalità a schermo intero e si avvale davvero bene delle divisioni.
Decano del

4

Come molti hanno già detto, è necessario il controllo della versione. C'è una bella offerta gratuita dal software FogCreek (devi ringraziarli per aver fornito stackexchange che rende possibile questo sito). Si chiama Kiln (costruito sopra Mercurial ) e si integra con un bel software di tracciamento di bug / funzionalità / tempo che hanno creato chiamato FogBugz . Per un team di 2 sviluppatori forniscono versioni gratuite di questi prodotti (e li ospitano per te). Uso questa configurazione per i miei progetti e le versioni a pagamento per tutti i prodotti software su cui lavoro per il mio datore di lavoro (abbiamo un team di sviluppatori molto più grande, quindi devo usare le versioni a pagamento). Vale la pena dare un'occhiata.

Se decidi di usarli, ecco alcuni buoni tutorial o link utili per iniziare:


1

Strumenti che il mio team utilizza per una collaborazione senza problemi:

• GitHub, che se hai un po 'di soldi è un modo estremamente economico e semplice per ospitare tutta la tua fonte. Questa è la piattaforma di controllo della versione di cui la maggior parte delle persone qui parla. Pensalo come un account Pastebin che esiste sul tuo disco rigido locale e viene aggiornato ogni volta che uno dei membri del tuo team apporta modifiche. I progetti ospitati sono chiamati depositari. Esistono molti client Git gratuiti, alcuni dei quali si integrano direttamente in Windows per mantenere i tuoi depositi puliti e aggiornati.

• Documenti Google per documenti di progettazione di giochi, idee, concept art.

• L'uso occasionale di DropBox se uno di noi ha bisogno di una risorsa o uno script specifici ... questo è comunque raro e preferiamo lavorare con GitHub.


1

Se stai usando Visual Studio, l'opzione migliore è Team Foundation, proviene da Microsoft ed è il miglior controllo di versione che conosco, la cosa negativa è che hai bisogno di un server, sql server e il team Foundation Server per funzionare nel server (il client è già con Visual Studio), se ne hai la possibilità, provalo.


Attualmente sto usando il Team Foundation. Ho una domanda riguardante le filiali e l'unione delle filiali. Se creo due rami e qualcuno aggiunge del codice a una classe e aggiungo un codice diverso alla classe quando li unisco aggiungerà entrambe le modifiche al file o avremo un errore e dovremo scegliere una delle modifiche ?
steakbbq,

Non uso branch per quello, uso branch per versioni diverse, se lo fai, Visual Studio probabilmente farà male l'unione (è come quando qualcuno sta usando una classe e un'altra controlla la stessa classe e loro due aggiungono codice, Visual Studio ti chiederà di eseguire un'unione manuale), se vuoi apportare modifiche a una classe contemporaneamente, perché non usi le classi parziali? usa i rami per le diverse versioni, in modo da avere un maggiore controllo sulle tue versioni
Rudy_TM,

"Team Foundation, è di Microsoft ed è il miglior controllo di versione che io conosca" Oh caro :) Hai mai provato qualcos'altro?
Andy M,

1

Per la programmazione di coppia virtuale, utilizzo questa configurazione (coordinando tutto su Skype):

  1. Installa un server SSH su una delle tue macchine.
  2. Installa tmux
  3. L'altra persona sta nel tuo computer.
  4. Chiedi all'host di avviare una sessione tmux
  5. Chiedi al tuo partner di eseguire "tmux at" nella sua connessione SSH

Ora tu e il tuo amico vedrete la stessa schermata del terminale. Ma probabilmente vuoi la possibilità di lavorare insieme al di fuori del tuo computer, giusto?

  1. Crea un account Bitbucket.org, crea un progetto (preferisco Git) e segui le loro istruzioni su come creare un repository vuoto.
  2. Copia i file del tuo progetto con "git add. && git commit -m 'Initial commit.'"
  3. Push in Bitbucket con "git push origin master"

Ora tu e il tuo amico potete lavorare sulle modifiche in modo indipendente e inviarle a Bitbucket quando siete pronti.

Ciò non consentirà a entrambi di modificarli insieme in Visual Studio in alcun modo, ma sarai in grado di modificare il codice sorgente stesso se stai accoppiando alcune nuove funzionalità o eseguendo il debug di un problema. Fintanto che spingi le modifiche in seguito, il tuo amico può aprirlo in VS.


1

Suggerirei il controllo della versione di Bazaar . È piccolo, pratico, ottimo per progetti di uomini piccoli / one2few. Git e SVN sono usati più spesso per progetti / team più grandi. Bazaar ha in sviluppo plugin VS, ma per te non fa molta differenza usandolo al di fuori di VS. È davvero facile usarlo una volta che lo conosci e lo configura inizialmente. Ha alcuni plug-in più utili.


-2

Molti buoni suggerimenti già, ma se vuoi scegliere una soluzione semplice e di bassa tecnologia, questo funziona per me quando collaboro:

  1. Usa i commenti all'intestazione di ogni script per tenere traccia di quando è stato modificato, da chi e quando cioè:

    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. Un forum privato o meglio ancora un Wiki è un buon modo per comunicare idee e tenere tutti aggiornati con i progressi.

Le idee fornite sono già migliori di questa soluzione, ma è molto facile da implementare con un investimento di tempo minimo, per un piccolo progetto con solo un paio di persone che lavorano insieme potrebbe essere sufficiente per le tue esigenze.

Avendo lavorato per una grande organizzazione globale, posso onestamente dire che la quantità di tempo persa a causa della burocrazia che circonda il loro software di controllo versione (MKS) è un vero dolore!


ma odio i commenti del genere alla testa di ogni sceneggiatura. E comunque questo non affronta la domanda qui; le tecniche per tenere traccia delle modifiche non ti dicono nulla su come i membri del team condivideranno il loro lavoro.
jhocking

Bene, la comunicazione non è un problema, i miei colleghi sviluppatori siedono in ventrilo tutto il giorno con me e parliamo parecchio lol.
steakbbq,
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.