Как правильно обрабатывать исходный код и данные в хранилище - PullRequest
9 голосов
/ 08 апреля 2011

Я работаю над совместным научным проектом, который состоит из нескольких сценариев Python (максимум 1 МБ) и относительно большого набора данных (1,5 ГБ).Наборы данных тесно связаны со сценариями Python, поскольку сами наборы данных являются наукой, а сценарии представляют собой простой интерфейс для них.

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

Есть ли чистый механизм для обработки этого?

Ответы [ 3 ]

7 голосов
/ 08 апреля 2011

Если файлы данных меняются редко и вам все равно обычно нужны все эти данные, просто добавьте их в Mercurial и покончите с этим. Все ваши клоны будут иметь размер 1,5 ГБ, но именно так и должно быть с таким количеством данных.

если данные являются двоичными данными и часто изменяются, то вы можете попытаться не загружать все старые данные. Один из способов сделать это - использовать подкаталог Subversion. У вас будет файл .hgsub с

data = [svn]http://svn.some.edu/me/ourdata

, который говорит Mercurial сделать svn checkout из правого URL-адреса и поместить рабочую копию Subversion в ваш клон Mercurial как data. Mercurial сохранит для вас дополнительный файл с именем .hgsubstate, в котором он записывает номер редакции SVN для проверки любого заданного набора изменений Mercurial. Используя подобную Subversion, вы получите только последнюю версию данных на вашем компьютере, но Mercurial будет знать, как получить более старые версии данных, когда это необходимо. Пожалуйста, ознакомьтесь с этим руководством по подкаталогам , если вы пойдете по этому маршруту.

4 голосов
/ 08 апреля 2011
1 голос
/ 08 апреля 2011

Мое первое желание состоит в том, чтобы разделить скрипты python в их собственном репозитории, но мне действительно нужно больше информации о домене, чтобы сделать «правильный» вызов.

С одной стороны, если будут созданы новые наборы данных, то вы бы хотели, чтобы основной набор инструментов мог обрабатывать все из них, верно? Но я также могу видеть, как новые наборы данных могут представлять случаи, когда сценарии, возможно, ранее не обрабатывались ... хотя в идеальном мире кажется, что вы хотели бы, чтобы сценарии были написаны в общем виде, чтобы они могли обрабатывать будущие данные и существующие наборы данных ??

...