Using Git with MarkUs
If you've taken , you've probably realized that . Distributed version control systems like are better in , but unfortunately we're stuck with Subversion until .
Don't lose hope though, because you can still use Git locally with a Subversion remote thanks to []:
Clone your MarkUs repository
You can either clone your entire Subversion repository (e.g. ), or each subdirectory individually (e.g. ). I prefer to clone each directory individually:
(Use your own CDF username and group ID in place of g3name
and group_xxxx
).
# Go to where you keep your CSC369 assignments❯ cd path/to/csc369# Use git-svn to clone the repository❯ git svn clone --username=g3name https://markus.cdf.toronto.edu/svn/csc369-2014-09/group_xxxx/a1
You'll see output similar to the following. Just type p
when prompted to accept the certificate,
and enter your password when prompted.
Initialized empty Git repository in path/to/csc369/a1/.git/Error validating server certificate for 'https://markus.cdf.toronto.edu:443':- The certificate is not issued by a trusted authority. Use thefingerprint to validate the certificate manually!Certificate information:- Hostname: markus.cdf.toronto.edu- Valid: from Fri, 11 Apr 2014 00:00:00 GMT until Sat, 11 Apr 2015 23:59:59 GMT- Issuer: COMODO CA Limited, Salford, Greater Manchester, GB- Fingerprint: 3d:68:3e:94:9b:07:31:50:91:7a:3e:f9:9c:99:d8:82:22:6f:e7:4eCertificate problem.(R)eject, accept (t)emporarily or accept (p)ermanently? pAuthentication realm: <https://markus.cdf.toronto.edu:443> MarkUs Subversion RepositoryPassword for 'g3name':r2 = 90f73ae3dc816ef55ab6b7becbb839f7c819529f (refs/remotes/git-svn)A .gitignoreA list_driver.cA list_sync.cA list.cA MakefileA list.hA list_handoff.cChecked out HEAD:https://markus.cdf.toronto.edu/svn/csc369-2014-09/group_xxxx/a1 r2
That's all the setup necessary! Now you can enter your new Git repository and use Git normally:
❯ cd a1/❯ git statusOn branch masternothing to commit, working directory clean
Interact with a Subversion server
It's well worth reading the official , but here's a quick primer on how to commit changes to and receive updates from the Subversion server:
Commit to Subversion
❯ git svn dcommit
This will take your new local Git commits, do a Subversion commit for each, then rewrite (i.e. rebase) your local Git commits to include a unique identifier.
Update with remote changes
❯ git svn rebase
This will fetch new changes from the Subversion server, place them into your local Git history, and replay your un-pushed, local Git commits on top of the new changes.