6 Stimmen

Versionskontrolle für Hausaufgaben

Die Schule hat wieder begonnen, und ich weiß nicht mehr, wo mir der Kopf steht. Am Ende des letzten Semesters hatten wir ein Gruppenprojekt mit Subversion (Gruppe von 4 Personen), um Commits zu machen und es fertigzustellen. Mir ist auch aufgefallen, wie einfach es war, Zugang zu einem zentralen Punkt für meine Hausaufgaben zu haben. Ich möchte SVN oder Git verwenden (ich habe kürzlich Git kennengelernt) und habe ein Problem.

Wie organisiert man SVN am besten für mehrere Hausaufgaben für mehrere Computerklassen?

Ich habe 2 Programmierkurse, die ich unbedingt belegen möchte. Mit at Minimum bei 1 Aufgabe pro Woche sind das 32 Aufgaben, die in 2 Klassen zu bewältigen sind. Sollte ich sie alle in einem Repository aufbewahren und nur 1 Java und 1 C++ kennzeichnen?

Vielen Dank im Voraus.

Edit: Ich sollte erwähnen, dass ich ein jährliches Hosting habe, das sowohl Git als auch Subversion über WebDAV erlaubt. Auf diese Weise habe ich letztes Jahr auf das svn-Repositorium für mein Projekt zugegriffen. Ich habe die Möglichkeit, meine Hausaufgaben über dieses Tool vor der Öffentlichkeit zu schützen, für diejenigen, die mit dieser Einrichtung nicht vertraut sind.

9voto

hasen Punkte 154413

Wenn Sie zwischen vielen Computern wechseln, sollten Sie die Aufgaben auf einem USB-Stick mitnehmen. Vorausgesetzt, Sie verwenden Git, sollte es keine Probleme geben.

Normalerweise habe ich einen Ordner für jede Klasse und darunter einen Ordner für jede Aufgabe,

cpsc511/
   a1/
   a2/
   a3/
cpsc423/
   a1/
   a2/
   a3/

Für jeden Auftrag würde ein eigenes Repository eingerichtet. Ich sehe keinen Grund, dasselbe Repository für alle Aufgaben zu verwenden, da sie in den meisten Fällen durch nichts miteinander verbunden sein werden.

7voto

Martin Beckett Punkte 92477

Ich spreche für SVN -
Ein Repository mit mehreren Projekten ist normal.

Sie können problemlos einen eigenständigen SVN-Server (ohne Webserver) auf einem PC einrichten

Sie könnten sich auch überlegen, svn mit einem dateibasierten Repository auf einem USB-Stick zu verwenden, um den Wechsel zwischen Zuhause und der Schule zu vereinfachen. Dies ist darauf beschränkt, dass nur ein Benutzer auf die Dateien zugreift, aber es bedeutet, dass Sie nichts weiter als den SVN-Client (oder TortoiseSVN) benötigen

ps. Zu lernen, wie man SCC benutzt, ist eines der wichtigsten Dinge, die man in der Schule nicht lernt.

4voto

bobby Punkte 336

Im Geiste des Lernens und des Teilens stelle ich zwei wirklich großartige Ressourcen für Subversion und Git zur Verfügung. Ich denke, es hängt von der jeweiligen Situation ab, was für die eigenen Bedürfnisse am besten ist.

Subversion Buch - Versionskontrolle mit Subversion Offizielles Buch

Git - Pro Git (Buch) Großartige Anleitung zur Verwendung von Git

Git-Hub - Github lernen (learn.github.com Das habe ich erst heute gefunden.

Bislang habe ich Subversion und Git ausprobiert und festgestellt, dass Git mit der von Hasenj beschriebenen Konfiguration am besten funktioniert. Ich werde versuchen, wieder mit diesem Thread zu folgen. Nochmals vielen Dank für all Ihre Ratschläge

2voto

joeslice Punkte 3402

Sie könnten Folgendes in Erwägung ziehen bitbucket.org die Mercurial-Hosting mit einem privaten Repository kostenlos anbietet. Es ist ein relativ einfach zu erlernendes Versionsverwaltungssystem, zu dem es zahlreiche Tutorials und Beispiele gibt. Sie können dieses Repository bei Gruppenprojekten auch mit Ihren Teamkollegen teilen. Auch für Git gibt es zahlreiche derartige Dienste.

Ich glaube nicht, dass es einen guten Grund gibt, Ihr Repository nach Technologien aufzuteilen (z.B. Java/C++), aber wenn Sie nur ein Verzeichnislayout wie /assignments/course/assignment_x haben, sollten Sie damit zurechtkommen. Es gibt wahrscheinlich einige Codes, die Sie kursübergreifend gemeinsam nutzen können, aber ich nehme an, das hängt von den prof.....

2voto

Penang Punkte 1275

Ein weiterer Punkt, den man beachten sollte, wenn man seine Semesterarbeiten in der Cloud speichert, ist die Zugänglichkeit. Ich habe beschlossen, jede Codezeile, die ich für mein Grundstudium geschrieben habe, mit dem folgenden Skript zu sichern.

#!/usr/bin/env python

import os
import smtplib
import sys

mail_server = '###'
from_email = '###'
sender = '###'
to_email = '###'
mailbox_name = '###'
mailbox_password = '###'

server = smtplib.SMTP(mail_server)
server.login(mailbox_name, mailbox_password)

repository, revision = sys.argv[1:]

# get info about the commit
cmd = "svnlook info %(repository)s" % locals()
info = os.popen(cmd).read()
info = info.split("\n")
author = info[0]
time = info[1]

# combines all lines of multi line comment into a single line
comment = info[3:len(info)]
temp = ""
for c in comment:
    temp += c + " "
comment = temp

# find out what changes are made
cmd = "svnlook changed %(repository)s" % locals()
changes = os.popen(cmd).read()

# include the diff between new and prior revision
cmd = "svnlook diff %(repository)s -r %(revision)s" % locals() 
diff = os.popen(cmd).read() 

msg = (
"To: %(to_email)s\r\n"
"From: %(sender)s %(from_email)s\r\n"
"Subject: Revision %(revision)s committed\r\n"
"Content-type: text/plain\r\n"
"\r\n"
"Revision: %(revision)s\r\n"
"Comment: %(comment)s\r\n"
"\r\n"
"Author: %(author)s\n"
"Time: %(time)s\r\n"
"\r\n"
"Files affected:\r\n"
"%(changes)s\r\n"
"Changes Made:\r\n"
"%(diff)s\r\n"
)

msg = msg % locals()

server.sendmail(from_email, to_email, msg)
server.quit()
  • Platzieren Sie dies in 'svn-repo/hooks/' (speichern Sie es als post-commit)
  • Ausführbar machen - 'chmod +x post-commit'.

Ich habe sie aus zwei Gründen an Ihre persönliche Google Mail-Adresse geschickt: 1. Ich kann meinen Posteingang noch Jahre später über die einfache Google Mail-Schnittstelle durchsuchen. 2. Sie können am nächsten Tag nach einer langen Nacht der Programmierung aufwachen und alles, was Sie eingegeben haben, auf seine Richtigkeit hin überprüfen - viele Softwareunternehmen folgen dieser Praxis.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X