我希望在实践中,无论您规定的任何规则,都会有更多的例外,而不是正确处理的符合标准的邮件。您将为手动修复和“计算机吃了我的作业”声称感到头疼。
由于这是一个 CS 200 级别的课程,因此要求他们使用一些版本控制系统,并省去使用 VCS 强加的刚性结构解析自由格式电子邮件的麻烦。您的学生也将从该要求中受益。如果我 10 岁的孩子能够欣赏 Google Docs 中自动修订控制的优点,我猜你的学生可以处理 Mercurial 或 git 甚至(喘气!)Subversion。
添加以回应评论
Yes, but with Mercurial (and presumably git) "repository" is a fancy word for "directory" and is not the heavyweight DBMSy thingy that older VCS models may have led you to expect.
Here is how as a student I would expect to work on a hypothetical assignment:
studenta@dorm$ hg clone https://Rich.univ.edu/studenta/cs208
$ cd cs208 ; broswer ./hw1.html
$ mkdir hw1 ; cd hw1 ; make my work files
$ hg add * ; hg commit -m "perfect the first time!" # updates locally only
$ make lots of bug fixes
$ hg commit -m "okay really done now"
$ hg push
# sleep, party, go to class with hangover
$ hg pull
$ browse hw2.html ; mkdir hw2
...
The assignments in the student's repository placed there by you was just for the sake of demonstration. Since you "own" the Rich.unix.edu machine, their pushes become authoritative. You'd
- Write a (tiny) script to
hg init $student/cs208
on Rich.univ.edu for each student in the roster.
- Figure whether HTTPS or SSH works best in your environment
- Add commentary - if desired - to the student's files that they'd pick up on their next pull
- Have a managed, convenient, logged record of all the interactions.
- The students get affirmative feedback at the moment of push that it was accepted
Finally, should the repository server be down they could
$ hg export tip | mail -s "server down; assignment done" Rich@univ.edu
And you'd still have a timestamped, digested version of their submission which has a rigid format which you could commit for them, or better still:
"Dr. Rich, the server was down!!!"
"But
you sent me an export via e-mail,
yes?"
"Of course, sir."
"Well, just
push when the machine is back up, I
already have proof that you completed
it on time."
"Oh gee, Dr. Rich, you're
swell!"