Научите синхронить файлы на нескольких компах с контролем версий

pitrik2

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

pitrik2

примеры таких файлов:
.vimrc - у меня их ща десяток версий на 10-ти машинах
оитличаются друг от друга строчками которые я на одну машину успел добавить, а на другую не добавил потмоу что нереал для каждой добавляемой строчки проходить все машины
c:\WINDOWS\system32\drivers\etc\hosts - у меня там прописан алиас на форум, опять же на других машинах хочу чтобы эти алиасы появились не путем моих тяжких трудов
проблемы с .svn такие что я не хочу видеть .svn папочку в c:\WINDOWS\system32\drivers\etc\
ну и так далее

Dasar

mirror-ы тебе зачем?

pitrik2

mirror-ы тебе зачем?
миррор - мой комп на работе
основной сервак - мой домашний комп
1) основной может быть выключен, миррор тогда будет заместо него
2) другие рабочие компы не имеют выхода в инет (это правда можно туннелингом решить)
3) зачастую клиенты через проксю паршиво работают
4) если инета нет даже на рабочем, то миррор можно на флешке перенести к основному и тама "скоммитить" изменения в основной

artimon

Любая распределённая.
Я сейчас так git-ом пользуюсь

pitrik2

блин, забыл в изначальном топике спросить "git это умеет?"...
в топике просьба "научите"
можешь какиенить ссылки полезные дать как миррор настроить?

Sharp

Посмотри http://pikt.org/ — это то, что ты имеешь в виду?

sergeikozyr

Я сейчас так git-ом пользуюсь
.git ...

SPARTAK3959

Можно все файлы в отдельных папках хранить - тогда проблемы с checkout отдельного файла у svn не будет :grin: .

yroslavasako

git этого не умеет. Но тебе можно написать несложный скрипт, который будет собирать разбросанные по системе настройки и собирать их в одну папку. Потом эту папку gitом обрабатываешь и включаешь в репозиторий. И ещё один скрипт нужен, который будет распихвать настройки обратно по папкам. Скрипт этот стоит в тот же репозиторий и положить.
Ну и ещё придётся объяснять крону, что периодически стоит синкать репозитории.
А ещё можно посмотреть в сторону распределённых файловых систем с избыточностью. Они, конечно, не поддерживают котроль версий, зато сихнронзируются без всякого хрона. Но там тоже скорее всего придётся собирать файлы в директорию по кусочкам.

artimon

У меня всё хранится в одной папочке, а в нужных местах прописаны симлинки на неё

yroslavasako

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

artimon

У меня там же Makefile который прописывает линки. Так что git pull && make мне вполне достаточно

Ivan8209

> У меня там же Makefile
http://www.levenez.com/unix/guru.html
> У меня всё хранится в одной папочке, а в нужных местах
> прописаны симлинки на неё
У меня большинство настроек живёт в /etc и /usr/pkg/etc,
так что мне не нужны ссылки в таких количествах.
(Это не значит, что я их не использую.)
---
...Я работаю антинаучным аферистом...

Ivan8209

> Любая распределённая.
Почему?
bW> один из них центральный, остальные типа мирорров
> Так что git pull && make мне вполне достаточно
Чем это лучше "cvs up && make"?
---
...Я работаю антинаучным аферистом...

sergeikozyr

Чем это лучше "cvs up && make"?
блять, кохтпа, ты ещё у ребёнка спроси чем мороженное лучше говна.

sergeikozyr

если бы все системы были debian-based то вполне проканало бы решение в виде deb-пакета с соотв. postinst скриптом.

Ivan8209

>> Чем это лучше "cvs up && make"?
> ты ещё у ребёнка спроси чем мороженное лучше говна.
Во-первых, я спрашиваю не у ребёнка, а во-вторых, CVS лучше.
Особенно, в рассматриваемом случае.
---
"This user is BSD-compliant."

yroslavasako

Чёрт, вспомнил ещё одно классическое решение.
openldap
ну и скрипты, чтобы распихивать настройки из него для тех прог, которые сами этого не умеют. Есть продвинутое зеркалирование из коробки. Системы версий встроенной нет.

sergeikozyr

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

Ivan8209

>> а во-вторых, CVS лучше.
>> Особенно, в рассматриваемом случае.
> мягко скажем ты не прав.
Безо всяких "мягко", в данном конкретном случае я прав.
---
"Люди недалёкие обычно осуждают всё, что выходит за пределы их понимания."

artimon

> http://www.levenez.com/unix/guru.html
И что? Разница между make и ./install.sh в том, что первая короче и привычнее.
> У меня большинство настроек живёт в /etc и /usr/pkg/etc,
> так что мне не нужны ссылки в таких количествах.
У меня на 100% машин debian/ubuntu и в /etc хранятся ситемные/глобальные конфиги которые я не хочу и не могу изменять. Я настраиваю собственное окружение и все нужные мне файлы лежат в моём домашнем каталоге.
> Чем это лучше "cvs up && make"?
Тем, что для этого нужен сервер CVS.
Тем, что git pull я можно сделать с любого из доступных зеркал, если приспичит.

sergeikozyr

во-во, то же самое хотел сказать, только что-то лениво писать :D

pitrik2

Во-первых, я спрашиваю не у ребёнка, а во-вторых, CVS лучше.
Особенно, в рассматриваемом случае.
да лан
в данном конкретном случае мне например ветки удобно будет сделать с автообновлением из транка
в cvs этого нельзя в принципе

Ivan8209

>> Чем это лучше "cvs up && make"?
> Тем, что для этого нужен сервер CVS.
Да-а, сделать сервер CVS очень сложно.
А git у тебя работает без сервера с противоположной стороны?
> Тем, что git pull я можно сделать с любого из доступных
> зеркал, если приспичит.
Конфиг, где прописано зеркало по умолчанию, править при этом
не придётся.
(Я не утверждаю, что есть преимущество в распределённости,
но оно мизерное. Хотя и можно придумать условия, когда без
него жизнь становится тяжела.)
---
...Я работаю антинаучным аферистом...

sergeikozyr

Да-а, сделать сервер CVS очень сложно.
а клонировать репозиторий git можно просто через ssh.

Ivan8209

>> Да-а, сделать сервер CVS очень сложно.
> а клонировать репозиторий git можно просто через ssh.
Прикинь, клонировать репозиторий CVS тоже можно просто через ssh.
---
...Я работаю антинаучным аферистом...

sergeikozyr

ты вообще не в теме штоле?

artimon

> Да-а, сделать сервер CVS очень сложно.
Открывать порты, поднимать сервер, зеркалить… Да, сложно
> А git у тебя работает без сервера с противоположной стороны?
Да, по ssh
> Конфиг, где прописано зеркало по умолчанию, править при этом не придётся.
Нет. git pull ssh://nearby-machine/… master

Ivan8209

>> Да-а, сделать сервер CVS очень сложно.
> Открывать порты, поднимать сервер, зеркалить... Да, сложно
Открыть ssh очень сложно, да.
>> А git у тебя работает без сервера с противоположной стороны?
> Да, по ssh
Я всё понял.
---
"Narrowness of experience leads to narrowness of imagination."
Оставить комментарий
Имя или ник:
Комментарий: