Бесплатная система контроля исходного кода, которая не требует хранения локальных копий каждого файла, таким образом, удваивая использование пространства? - PullRequest
2 голосов
/ 05 октября 2009

Существует ли система контроля версий (помимо CVS), которая может быть настроена на хранение локальных копий файлов? Или, возможно, он просто не делает это по замыслу? В идеале такой параметр можно настроить по расширению или размеру файла.

Например, если я иногда захочу хранить большие фильмы или изображения в SVN, конечный результат - удвоение использования пространства на клиенте - и нет никакого пути к этому.

Я понимаю, что одним из решений является не фиксация таких файлов, но мой вопрос - поиск другого решения.

Для справки, я только что попробовал Mercurial (Hg), и он также использовал вдвое больше места. Я подозреваю, что Git сделал бы то же самое.

P.S. Я не понимаю, почему SVN уже не может реализовать поддержку для этого. Насколько это было бы просто - если файл не хранится локально, получайте его удаленно, как, я полагаю, делает CVS. Если сеть сейчас недоступна, покажите ошибку. / Выход

Ответы [ 6 ]

3 голосов
/ 05 октября 2009

Вы можете использовать Базар с облегченным оформлением ветки. Рабочий каталог будет содержать только редактируемый исходный код, а bzr выполнит поиск по сети практически для любой операции. Но вы обнаружите, что даже если вы используете обычные ветви, размер ветви со всей историей обычно меньше рабочего дерева.

2 голосов
/ 05 октября 2009

SVN (и все другие современные VCS) были разработаны для хранения большого количества небольших текстовых файлов, а не огромного количества больших двоичных файлов. Все они хранят локальную копию, потому что это дешево (большинство проектов редко используют больше, чем несколько мегабайт), и это делает почти все операции намного быстрее (diff, status, local commit).

Итак, вы используете не тот инструмент. Если вам нужно управлять изображениями, попробуйте Picasa или что-то подобное. К сожалению, большинство баз данных изображений не знают, как сохранить историю редактирования изображения (что очень жаль; я открыл ошибку для digikam лет назад, и она все еще открыта).

Я имею в виду, что было бы намного эффективнее сохранить исходное изображение и просто сохранить параметры для всех внесенных вами изменений плюс текущее "окончательное" изображение. Все промежуточное можно воссоздать из исходного изображения и снова применить операции. Ни одна VCS в мире не сможет превзойти это с точки зрения эффективности («Контраст + 10%» и сравнение двух JPG).

Поэтому ваша лучшая ставка сегодня - это либо профессиональный инструмент для редактирования фотографий (-> не бесплатный), либо вы должны копировать и переименовывать фотографии, которые хотите редактировать.

Да, это отстой.

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

0 голосов
/ 05 октября 2009

Насколько велика ваша библиотека изображений? В наши дни, я думаю, было бы дешевле купить еще один жесткий диск емкостью 80 ГБ - если вы можете найти такой маленький на рынке - чем покупать пакет управления исходным кодом с функциями экономии дискового пространства.

0 голосов
/ 05 октября 2009

Это может звучать глупо (и, возможно, так и есть), но как только вы зафиксировали свой большой файл, почему бы вам просто не удалить файл на диске? В конце концов, VCS может быть точно использован для восстановления файла, когда вам это нужно.

Я только что попробовал это с Базаром:

> ls -al
total 7123
drwxrwxrwx   1 user     group           0 Oct  5 11:42 .
drwxrwxrwx   1 user     group           0 Oct  5 11:22 ..
-rw-rw-rw-   1 user     group     2469224 Aug 29  2007 Charles_Darwin_01.jpg
-rwxrwxrwx   1 user     group     4076719 Sep 25 15:35 FileZilla-3.2.7.1.exe
-rw-rw-rw-   1 user     group      746477 Aug 24 18:35 floorplan2008.png

> du -bs
7292420 .

> bzr init
Created a standalone tree (format: 2a)

REM Adding by name to override my own ignore rules, a simple `bzr add` is enough otherwise
> bzr add Charles_Darwin_01.jpg  FileZilla-3.2.7.1.exe  floorplan2008.png
adding Charles_Darwin_01.jpg
adding FileZilla-3.2.7.1.exe
adding floorplan2008.png

> bzr commit -m "Storing big binary files in repository"
Committing to: E:/temp/TestsVCS/Big/
added Charles_Darwin_01.jpg
added FileZilla-3.2.7.1.exe
added floorplan2008.png
Committed revision 1.

> du -bs
14552798        .

> rm Charles_Darwin_01.jpg  FileZilla-3.2.7.1.exe  floorplan2008.png

> du -bs
7260378 .

> bzr add Bazaar-quick-start-summary.pdf
adding Bazaar-quick-start-summary.pdf

> bzr commit -m "Adding good reference" Bazaar-quick-start-summary.pdf
Committing to: E:/temp/TestsVCS/Big/
added Bazaar-quick-start-summary.pdf
Committed revision 2.

> rm Bazaar-quick-start-summary.pdf

> du -bs
7666520 .

REM I want to work on a file
> bzr revert Charles_Darwin_01.jpg
 N  Charles_Darwin_01.jpg

REM I edited the file
> ls -l Charles_Darwin_01.jpg
-rw-rw-rw-   1 user     group     2419048 Oct  5 11:52 Charles_Darwin_01.jpg

> bzr st
removed:
  Bazaar-quick-start-summary.pdf
  FileZilla-3.2.7.1.exe
  floorplan2008.png
modified:
  Charles_Darwin_01.jpg

REM I commit by name to avoid to commit the deletions, 
REM but actually they can be commited without problem
> bzr commit -m "Changed just some IPTC tags" Charles_Darwin_01.jpg
Committing to: E:/temp/TestsVCS/Big/
modified Charles_Darwin_01.jpg
Committed revision 3.

> du -bs
12505785        .

> rm Charles_Darwin_01.jpg

> du -bs
10086737        .
REM + size of image + around 1KB of metadata

Примечание: это в Windows, но я использую команды UnxUtils, они удобны в командной строке.

0 голосов
/ 05 октября 2009

ClearCase хранит только локально измененные файлы в вашей рабочей области (в их именах это называется представлением).

0 голосов
/ 05 октября 2009

Единственный, который я использовал, который не имел чрезмерного пространства для использования, был универсально ненавистным, визуальным источником безопасности.

SoureSafe 6.0 несет только накладные расходы на хранение для привязок источника.

Однако я считаю SourceSafe системой уничтожения источников, поэтому я не рекомендую ее вообще.

...