Управление версиями для присвоений домашней работы

Ted Percival :
... Вы не должны бросать malloc () возвращаемое значение.

Вы корректны, конечно. Я полагаю, что это всегда было верно, хотя у меня нет копии K& R для проверки.

мне не нравится много неявных преобразований в C, таким образом, я склонен использовать броски для создания "волшебства" более видимым. Иногда это помогает удобочитаемости, иногда это не делает, и иногда это заставляет тихую ошибку быть пойманной компилятором. Однако, у меня нет твердого мнения об этом, так или иначе.

Это особенно вероятно, если Ваш компилятор понимает комментарии в стиле С++.

Да... Вы поймали меня там. Я провожу намного больше времени в C++, чем C. Спасибо за то, чтобы замечать это.

6
задан Greg Hewgill 15 September 2012 в 11:22
поделиться

9 ответов

Говоря от имени SVN -
Один репозиторий с несколькими проектами - это нормально.

Вы можете легко настроить автономный сервер SVN (без веб-сервера) на ПК.

Вы также можете рассмотреть возможность использования svn с файловым репозиторием на USB-ключе для упрощения взаимодействия между домом и школой. Это ограничено только одним пользователем, имеющим доступ к файлам, но означает, что вам не нужно ничего, кроме клиента SVN (или TortoiseSVN)

ps. Научиться пользоваться SCC - одна из самых важных вещей, которым не учат в школе.

7
ответ дан 8 December 2019 в 03:53
поделиться

Если вы перемещаетесь между множеством компьютеров, вы можете захотеть перенести задания на USB-накопитель. Предполагая, что вы используете git, проблем возникнуть не должно.

Обычно у меня есть папка для каждого класса, а под ней - папка для каждого задания,

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

Каждое задание будет иметь свой собственный репозиторий. Я не вижу причин использовать одно и то же репо для всех назначений, поскольку в большинстве случаев они вообще ничем не связаны.

9
ответ дан 8 December 2019 в 03:53
поделиться

In the spirit of learning, and sharing I'm posting two really great resources for both subversion and git. I think it'd up to anyone's very own situation to choose which is best for their needs.

Subversion Book - Version Control With Subversion Official Book

Git - Pro Git (Book) Great guide to using git

Git Hub - Learn Github (learn.github.com Just found this today.

So far I've tried subversion and git, and found git with the setup hasen j described works best. I'll try to follow up again with this thread. Thanks again to all of your advice

4
ответ дан 8 December 2019 в 03:53
поделиться

Вы можете рассмотреть возможность использования bitbucket.org , который предлагает бесплатный хостинг Mercurial с одним частным репозиторием. Это относительно простая в освоении система управления версиями, в которой есть множество руководств и примеров. Вы также можете поделиться этим репо со своими товарищами по команде во время групповых проектов. Для git существует множество подобных сервисов.

Я не думаю, что есть веская причина для разделения вашего репозитория по технологиям (например, Java / C ++), но если у вас просто есть макет каталога, например / assignments / course / assignment_x, все будет в порядке. Вероятно, есть какой-то код, которым вы можете поделиться в курсовой работе,

2
ответ дан 8 December 2019 в 03:53
поделиться

Я хотел бы добавить к комментарию Джозлиса выше, еще одно преимущество использования Mercurial (скажем, на Bitbucket) будет иметь легкий доступ к клиентам в Windows / Unix /Mac.

  • Переходите к другим репозиториям, если у них нет зависимостей.
  • Mercurial в значительной степени похож на init и запускается, но я думаю, это верно для всех DVCS. Это также означает, что вам не нужно слишком беспокоиться о том, как все организовать идеально, а вместо этого можно просто hg init в любом каталоге, прежде чем вы начнете там работать.

PS: Я бы ушел. это как комментарий к сообщению , но, видимо, мне еще не разрешено комментировать.

1
ответ дан 8 December 2019 в 03:53
поделиться

Я обнаружил, что проще всего иметь только один репозиторий с подкаталогами для каждого класса. Затем внутри каталогов классов я бы сделал папки назначений (если задания состояли из нескольких файлов) или просто поместил файлы напрямую (для однофайловых заданий, таких как документы).

1
ответ дан 8 December 2019 в 03:53
поделиться

Для меня, если я не размещаю репозиторий непосредственно на моем HD, я предпочитаю использовать DVCS (в данном случае Git). На данный момент я использую Bazaar, поскольку он может работать как с централизованным, так и с распределенным (и переключаться между ними с помощью операций Bind и UnBind). Думаю, вы тоже можете использовать его через WebDAV. Я использую его через плагин Eclipse, так что он такой же простой, как и другие VCS.

0
ответ дан 8 December 2019 в 03:53
поделиться

Я использую svn, размещенный на домашнем компьютере, для всех моих курсовых (и личных) проектов. Вот макет, который я использую для репозитория:

<SchoolName>
<SchoolName>\<className>
//assuming homework are generally single files
<SchoolName>\<className>\Homework\
//assuming multiple files needed
<SchoolName>\<className>\Assignment x- The Project of DOOM\ 
Personal\<broad non specific name>

И я считаю, что он мне подходит. Не только для компьютерных классов: английский, математика, вообще любой класс, где большая часть работы в конечном итоге будет печататься. Я вижу, что использование svn, скажем, с классом рисования было бы проблематичным.

1
ответ дан 8 December 2019 в 03:53
поделиться

Еще одна вещь, о которой следует помнить при сохранении семестровой работы в облаке, - это доступность. Я решил сделать резервную копию каждой строки кода, написанного для моего старшекурсника, используя следующий сценарий.

#!/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()
  • Поместите это в 'svn-repo / hooks /' (сохраните как пост-фиксацию)
  • сделайте его исполняемым - ' chmod + x post-commit '

Я отправляю его на ваш личный адрес Gmail по двум причинам: 1. Я могу просто искать в своем почтовом ящике через несколько лет, используя простой интерфейс Gmail. 2. Вы можете проснуться на следующий день после долгой ночи кодирования и просмотреть все, что вы сделали, в качестве проверки работоспособности - многие компании-разработчики программного обеспечения следуют этой практике.

2
ответ дан 8 December 2019 в 03:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: