2009-09-04 15 views
13

Sto insegnando un nuovo corso in una nuova università in questo semestre, e sono davvero interessato a mettere in piedi i miei studenti usando le Best Practices. In questo modo, mi piacerebbe assegnare e ricevere compiti da loro usando repository git. Sfortunatamente, io uso git, ma non lo capisco abbastanza bene per sapere quali sono i potenziali buchi di sicurezza e come evitarli. Inoltre, ho usato solo git per il controllo della versione personale e mai in un gruppo o team.Posso usare git per l'invio di incarichi?

Il mio piano attuale è quello di impostare la macchina A con utenti 1-12, corrispondente a ciascuno dei miei studenti. Genererò una coppia di chiavi pubbliche/private per ogni studente, e anche un repository git iniziale. Gli studenti possono quindi accedere al repository per nuovi incarichi e inviarlo quando lo inviano.

Idealmente, senza troppi problemi, sarò in grado di passare da un repository principale ai repository degli studenti quando sto dando incarichi. Se fosse possibile estrarre dai repository nel repository principale sarebbe altrettanto bello.

Modifica: questo testo non era chiaro. Intendo per loro spingere/tirare nel loro repository individuale quando completano un incarico o ne ricevono uno nuovo. Non presumo che sarò in grado di inviare incarichi nei loro laptop :)

Quindi da dove iniziare? Cosa cerco? È una cattiva idea? Se è così, perché?

+5

Penso che sia una bella idea. Sono depresso per la scarsa visibilità che ho avuto quando ho studiato strumenti come il controllo della versione. Se è una buona idea è diversa. –

+1

Penso che dovresti andare a prenderli da un repo per ottenere il compito. In questo modo sono loro a fare il lavoro, non tu. –

+0

È un'idea geniale. Forse anche impostare un'area su http://github.com/ per includere le istruzioni di assegnazione ecc ... – grenade

risposta

5

È possibile utilizzare Gitosis per gestire l'accesso SSH al repository, come descritto in scie.nti.st: Hosting Git repositories, The Easy (and Secure) Way e Tv's cobweb: Snakepit and gitosis, things I've been working on post del blog, e in Chapter 4.7: Gitosis di "Git Pro: il controllo di versione professionale" libro. È in Python e richiede setuptools. Oppure puoi provare a trovare il suo equivalente, come gitolite (in precedenza gitosis-lite) in Perl.

Soluzione alternativa sarebbe per ciascuno degli studenti avere un proprio repository, o una coppia di repository: uno privato in cui lavora e uno (semi) pubblico uno con accesso SSH che spinge a completare il lavoro finito . Dovresti svolgere il ruolo di manutentore/integratore e estrarre le modifiche dai loro archivi pubblici nel tuo repository (o nei tuoi repository). Gli studenti potrebbero prelevare dal tuo repository pubblico (o repository).

+0

Grazie Jakub. Raccomanderesti gitosi o account utente per mantenere i repository separati? Entrambi sembrano opzioni valide e non sono sicuro che sarà più facile e più sicuro. –

+0

Non ho la necessità di creare repository git multiutente, quindi non posso dirlo; Non ho esperienza personale con questa configurazione. Consiglierei di leggere i capitoli pertinenti di "Pro Git" (e forse anche "Git User's Manual" e "Git Community Book"). –

+2

gitosis è una soluzione abbastanza comoda per gestire repository git e l'accesso degli utenti. È possibile gestire tutti i repository e le autorizzazioni di accesso attraverso 1 file di configurazione. Sto usando la gitosi da circa un anno e la gestione e l'utilizzo sono davvero semplici. Vale sicuramente la pena dare un'occhiata. – maff

2

Per poter inserire i propri repository (che appartengono al loro utente) implica che è necessario utilizzare il privilegio di root per poterli inserire nel proprio. Perché non pubblicare il percorso per il compito e chiedergli di estrarlo?

Ovviamente, è anche possibile limitare le chiavi ssh in modo che sia possibile eseguire solo un determinato comando; potresti forse limitare i percorsi in un unico repository di proprietà di un singolo utente in base alla chiave fornita.

Git è un DCVS, quindi mi piace l'idea di più account.

+0

"Per poter inserire i propri repository (che appartengono al loro utente) implica che è necessario utilizzare i privilegi di root per poterli inserire nel proprio." Spero di poter aggirare questo aggiungendo me stesso al gruppo di ogni studente. Naturalmente, non ho remore a usare sudo in questo caso :) –

+0

Sì, forse solo forzare la loro umask a 002 farebbe il trucco (rendendo scrivibile il gruppo di file creati). –

+1

'git init' ha un'opzione' --shared' proprio per questa situazione. Git imposterà i bit di accesso al gruppo nel repository a qualcosa che abbia senso (per il gruppo). –

2

Se si utilizza Git, gli studenti dovranno apprendere molti concetti relativi alla gestione della configurazione del software, al controllo della versione, ecc. Che non è necessario per l'insegnamento, ad esempio, di un corso di geografia. Stai insegnando un corso SCM? Se è così, la tua idea sembra buona. In caso contrario, potresti prendere in considerazione qualcosa come Moodle. Se i tuoi utenti sono su Windows, ricorda che Git non è al suo meglio in quell'ambiente.

+0

Sono d'accordo, dovresti davvero assicurarti che padroneggino lo strumento, in modo che non perda dati, ecc. Quindi devi dedicare alcune ore per insegnare le prime basi VCS/DVCS, quindi git specifiche (reflog, indice, ecc.). – tonfa

+0

Questo potrebbe essere un affare. Sebbene la classe venga insegnata a livello universitario a studenti con un background in informatica, non ci sarà alcun materiale didattico sul controllo della versione. Spero che possano usare MOLTO basic git add/commit/push per trasformare i loro compiti. Potrei essere in grado di assegnare un'ora in un laboratorio per familiarizzare con git, ma non di più. –

Problemi correlati