LINUX.ORG.RU

Один файл в разных проектах. Какая VCS такое умеет?


0

0

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

Разреза́ть фреймфорк отдельно на ядро и отдельно на проекты-расширения - очень неудобно :)

★★★★★

Ответ на: комментарий от INFOMAN

Общие, в тех же каталогах. В разных было бы просто нарезать проект на два независимых проекта. Ядро + собственно реализация.

KRoN73 ★★★★★
() автор топика

> Есть ли VCS, позволяющие иметь один и тот же файл принадлежащим разным проектам?

А как же. есть, конечно. SCCS, RCS... добро пожаловать в средневековье.

tailgunner ★★★★★
()

Ещё параллельный вопрос. Аналогично ищется ещё VCS (или возможность обхода проблем, описанных ниже), способная нормально работать с удалённым каталогом, примонтированным локально через ftpfs. (Для работы с удалёнными системами, где нет никаких VCS).

SVN не даёт сделать checkout: «svn: Can't open file 'cms/.svn/entries': Отказано в доступе».

git позволяет создать удалённый оепозиторий но не позволяет добавить файлы: «fatal: unable to write sha1 fil»

mercurial добавляет файлы, но не позволяет их коммитить: «abort: Operation not permitted -- transaction abort! -- rollback completed».

Походу проблема в том, что для таких каталогов нельзя сменить владельца.

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

> Походу проблема в том, что для таких каталогов нельзя сменить владельца.

Это предположение или так сказал strace?

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

...потому что ИМХО проблема в том, что там нельзя создать симлинк (использунтся для блокировки как минимум Mercurial).

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

Предположение. strace выдаёт очень много мусора :)

Зато, например, на инициализации git выдаёт несколько строк:

error: opening .git/config: Permission denied

(при этом сам .git/config создаётся)

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

Да, похоже так и есть. И проблема в случае git вылезает на
этапе инициализации репозитория, ошибка добавления файла уже вторична:

rename(".git/config.lock", ".git/config") = 0
gettimeofday({1204129841, 559514}, NULL) = 0
open(".git/tIDzujC", O_RDWR|O_CREAT|O_EXCL|O_LARGEFILE, 0600) = 3
close(3)                                = 0
unlink(".git/tIDzujC")                  = 0
symlink("testing", ".git/tIDzujC")      = -1 ENOSYS (Function not implemented)
readlink(".git/config", 0xbf83f7bc, 4096) = -1 EINVAL (Invalid argument)
open(".git/config.lock", O_RDWR|O_CREAT|O_EXCL|O_LARGEFILE, 0666) = 3
open(".git/config", O_RDONLY|O_LARGEFILE) = 5
open(".git/config", O_RDONLY|O_LARGEFILE) = 7
fstat64(7, {st_mode=S_IFREG|0644, st_size=92, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f08000
read(7, "[core]\n\trepositoryformatversion "..., 4096) = 92

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

Гы. А вот mercurial, только я вооружился strace для него, вдруг всё закоммитил... Хех. Сейчас ещё поиграю.

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

Ага, понятно. mercurial колбасит, если текстовку коммита он запрашивает через редактор. Если -m "Текст" - то всё работает.

В общем, выбор для работы с удалёнными FS сделан :)

...

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

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

> вещей, не допускающих разделения на каталоги разного уровня

/me не представляет такой ситуации, но всё равно symlink farm должна спасти.

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

>/me не представляет такой ситуации

Разработки третьих сторон. Простейший пример - плагины Smarty. Все должны лежать в одном каталоге. А в разных проектах плагины нужны разные...

>но всё равно symlink farm должна спасти.

В этом случае - не спасёт :)

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