LINUX.ORG.RU

Система контроля версий


0

0

Прошу рекомендаций по поводу системы контроля версий. Есть два пожелания:

Предположим есть проект (проект_1) с файлами (не директориями!): файл_1_1, файл_1_2, файл_1_2_1, файл_1_3, ... файл_1_n.

Задача №1:
В проект_2 добавить файлы из проект_1 файл_1_1 и файл_1_3 при этом при изменении этих файлов, они бы обновлялись и в проект_1 и в проект_2 (примерно такая же схема в svn:externals, но только там, насколько мне удалось выяснить, можно подключать только директорию, а мне бы хотелось иметь возможность подключать отдельные файлы).

Задача №2:
В проект_2 добавили файл файл_1_2 из проект_1, но у файл_1_2 есть зависимость - файл_1_2_1 и он автоматически подключается к проекту.

Это будет централизованная система или нет, в принципе всё равно.

Ну как-то так =)

★★

MS Visual Source Safe

Из твоего описания возникает ощущение, что это какие-то ненужные костыли.

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

Смущает MS и Visual.

Почему ненужные костыли? В фряхе, например, есть порты и там есть зависимости - очень удобная штука. Ясное дело, что всё можно руками отследить, но тогда и версии надо контролировать не svn'ом, предположим, а командой cp pro1.2 pro1.3. Или я неправ?

SaBo ★★ ()
Ответ на: комментарий от SaBo

> Смущает MS и Visual.

Насколько я знаю, это единственная VCS, позволяющая использовать одни и те же файлы в разных проектах.

Почему ненужные костыли?

Они еще и опасные, потому что автоматическое обновление файлов в других проектах - дорога в ад.

Или я неправ?

Ты неправ. И ты не объяснил, зачем тебе это всё надо.

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

А какая разница что за файлы?
Ну, предположим, у меня есть два класса - первый валидатор, а второй для построения форм и приёма введённых данных. Класс для построения форм использует класс валидатора, но, например, где-то мне нужен только валидатор. Можно, конечно, объединить их в модуль а-ля DataManipulation, но только нафига мне лишний код?

Они еще и опасные, потому что автоматическое обновление файлов в других проектах - дорога в ад.


Не согласен. Есть большое количество фреймворков / библиотек / etc. Или Вы, когда выходит новая версия сторонней библиотеки, у себя её не обновляете?

SaBo ★★ ()

Может, в таком случае стоит сделать разделяемую библиотеку, подключаемую к разным проектам, и в целом независимую от каждого проекта?

Chaser_Andrey ★★★★★ ()
Ответ на: комментарий от Chaser_Andrey

> Может, в таком случае стоит сделать разделяемую библиотеку, подключаемую к разным проектам, и в целом независимую от каждого проекта?

В принципе, о том речь и идёт. Только мне, например, нужно, не всю библиотеку целиком, а её часть.

SaBo ★★ ()
Ответ на: комментарий от bbk123

> пхп?

В данном случае именно пхп. С компилируемыми языками меньше заморочек в этом плане.

ClearCase


Во, спасибо за наводку ;)

SaBo ★★ ()
Ответ на: комментарий от SaBo

>> Они еще и опасные, потому что автоматическое обновление файлов в других проектах - дорога в ад.

Не согласен.

MS Visual Source Safe

Или Вы, когда выходит новая версия сторонней библиотеки, у себя её не обновляете?

Ты не видишь разницы между коммитом и релизом?

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

> Ты не видишь разницы между коммитом и релизом?

Вижу. Что я должен с этим делать?

SaBo ★★ ()
Ответ на: комментарий от SaBo

>> Ты не видишь разницы между коммитом и релизом?

Вижу. Что я должен с этим делать?

Не знаю. Могу сказать чего ты делать не должен - ты не должен при коммите в проекте А обновлять файлы в проекте Б.

tailgunner ★★★★★ ()
Ответ на: комментарий от SaBo

в python, java, ruby и c# таких проблем тоже нет.

да, и почему нельзя просто подключить из другой папки, которая указана в include_path?

Flavio_German_Davino_Rodriguez ()
Ответ на: комментарий от bbk123

ты такой добрый :)) не, clearcase прекрасно подходит для задачи, и прекрасно с ней справится... но судя по уровню вопроса, этот человек врятли осилит стоимость лицензии...

Cy6erBr4in ★★★ ()
Ответ на: комментарий от Flavio_German_Davino_Rodriguez

а если это javascript (jquery к примеру), то вряд ли ты будеш подстраивать свой код под каждое изменение этой либы.

Flavio_German_Davino_Rodriguez ()
Ответ на: комментарий от Flavio_German_Davino_Rodriguez

> Не знаю. Могу сказать чего ты делать не должен - ты не должен при коммите в проекте А обновлять файлы в проекте Б.

Если я правильно понял Ваше мнение, то должна быть библиотека с бранчами и транками. При этом всю разработку вести отдельно от остальных проектов, а подключать только релизы?

да, и почему нельзя просто подключить из другой папки, которая указана в include_path?


Как раз думаю об этом... Возможно, я перемудрил, а в этих двух сообщениях есть смысл ))

SaBo ★★ ()
Ответ на: комментарий от SaBo

Всё, всем спасибо за участие, наверно, выход найден!

SaBo ★★ ()
Ответ на: комментарий от SaBo

>> Не знаю. Могу сказать чего ты делать не должен - ты не должен при коммите в проекте А обновлять файлы в проекте Б.

Если я правильно понял Ваше мнение, то должна быть библиотека с бранчами и транками.

Нет, всего лишь не должно быть автоматического обновления. Думаю, ты обойдешься двумя транками и _контролируемым_ мержингом изменений между ними.

Думаю, Mercurial + hgsubrepos для тебя слишком сложно, но SVN вполне справится с задачей.

tailgunner ★★★★★ ()

Весть тред не читал, но почему не подходит git+modules?

oh ()
Ответ на: комментарий от Cy6erBr4in

> но судя по уровню вопроса, этот человек врятли осилит стоимость лицензии

А компания, в которой он возможно работает?

bbk123 ★★★★★ ()
Ответ на: комментарий от oh

> Весть тред не читал, но почему не подходит git+modules?

Никто не сказал, что не подходит =)
В принципе, возможности интересные - надо изучить.

SaBo ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.