git/mercurial, набор проектов

IDE, VCS и прочее

Модератор: Модераторы разделов

Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

git/mercurial, набор проектов

Сообщение t.t »

Возник вопрос возможности работы с одним подкаталогом из репозитория как с отдельныи репозиторием. Интересно узнать, как с этим в git. Потому как в mercurial есть subrepo, но, насколько я понял из документации, пока у него есть недоработки, которые, конечно, будут исправляться, но вот вопрос когда.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5268
ОС: Gentoo

Re: git/mercurial, набор проектов

Сообщение /dev/random »

Что именно требуется? Описание задачи не совсем понятно.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: git/mercurial, набор проектов

Сообщение sash-kan »

t.t
скорее всего, ты имеешь в виду то, что называется submodule.

p.s. что-то заржавела у меня эта тема за отсутствием времени на разборки с mercurial-ом.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: git/mercurial, набор проектов

Сообщение t.t »

t.t писал(а):
28.05.2010 16:49
Возник вопрос возможности работы с одним подкаталогом из репозитория как с отдельныи репозиторием. Интересно узнать, как с этим в git. Потому как в mercurial есть subrepo, но, насколько я понял из документации, пока у него есть недоработки, которые, конечно, будут исправляться, но вот вопрос когда.
Совсем забыл (наверное потому, что раньше не было нужно): есть ведь forest. Собственно, на его функционале идея subrepo и основана.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: git/mercurial, набор проектов

Сообщение t.t »

/dev/random писал(а):
28.05.2010 17:44
Что именно требуется? Описание задачи не совсем понятно.
Есть проект, состоящий из множества отдельных приложений. Хочется хранить всё в одном репозитории, но при этом иметь возможность с каждым приложением работать отдельно, как с самостоятельным репозиторием.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: git/mercurial, набор проектов

Сообщение t.t »

sash-kan писал(а):
28.05.2010 20:02
t.t
скорее всего, ты имеешь в виду то, что называется submodule.
Почитал немного про него. Похоже.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: git/mercurial, набор проектов

Сообщение sash-kan »

t.t писал(а):
28.05.2010 21:06
Хочется хранить всё в одном репозитории, но при этом иметь возможность с каждым приложением работать отдельно, как с самостоятельным репозиторием.
я тоже когда-то озадачивался такой «хотелкой».
по здравом размышлении пришёл к выводу, что ну его в баню.
и лучше реализовать что-то вроде проекта-«пускалки».
в котором будет только один мэйкфайл, из которого запускается клонирование нужных репозиториев в подкаталоги.
можно мэйкфайл ещё и утяжелить, добавив правила рекурсивной сборки в этих подкаталогах. но это уже «фантики».

p.s. может быть, имеет смысл отрезать твой вопрос от этой эпичной темы?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: git/mercurial, набор проектов

Сообщение t.t »

sash-kan писал(а):
28.05.2010 23:13
p.s. может быть, имеет смысл отрезать твой вопрос от этой эпичной темы?
Раз обсуждение пошло в таком ключе, то имеет.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: git/mercurial, набор проектов

Сообщение t.t »

sash-kan писал(а):
28.05.2010 23:13
t.t писал(а):
28.05.2010 21:06
Хочется хранить всё в одном репозитории, но при этом иметь возможность с каждым приложением работать отдельно, как с самостоятельным репозиторием.
я тоже когда-то озадачивался такой «хотелкой».
по здравом размышлении пришёл к выводу, что ну его в баню.
и лучше реализовать что-то вроде проекта-«пускалки».
в котором будет только один мэйкфайл, из которого запускается клонирование нужных репозиториев в подкаталоги.
можно мэйкфайл ещё и утяжелить, добавив правила рекурсивной сборки в этих подкаталогах. но это уже «фантики».
Тут есть два "но". По структуре развития проекта добавлять новые репозитории имеют право все разработчики, т.е. недостаточно начинить makefile уже существующими пунктами, нужна какая-то автоматизация. Понимаю, что решаемо, но всё же дополнительная сложность. И второе: часть разработчиков работают вне офиса, т.е. доступ получают по внешнему ip; все остальные -- по локалке. Ещё одна дополнительная сложность.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: git/mercurial, набор проектов

Сообщение sash-kan »

t.t писал(а):
29.05.2010 09:59
нужна какая-то автоматизация
дело техники. пример:
мои репозитории лежат у меня на сервере в ~/var/gits :
$ ls ~/var/gits
project1.git
project2.git
доступ к нему у меня по ssh.
там, где мне надо работать, можно сделать такой примерно файлик:

Shell

$ cat GNUmakefile %.git: -[ ! -e $(patsubst %.git,%,$@) ] && git clone ssh://server/~/var/gits/$@

чтобы склонировать project1:
$ make project1.git
будет сделан клон в каталог ./project1
это так можно получать клоны для новых, ещё пока не «прописанных» в мэйкфайл репозиториев.
а прописывать можно как-нибудь так (полный вариант файла):

Shell

$ cat GNUmakefile projects=project1 project2 gits=$(patsubst %,%.git,$(projects)) projects: $(gits) %.git: -[ ! -e $(patsubst %.git,%,$@) ] && git clone ssh://server/~/var/gits/$@

$ make projects
и вуаля.

p.s. ну а сам это мэйкфайл можно включить в некий мета-проект. и развёртывание репозиториев будет выглядеть примерно так:

Shell

$ cd <куда надо> $ git clone <путь к этому мета-проекту> . $ make projects


p.p.s. мэйкфайл, конечно, кривоват. но я пока не make-гуру.

t.t писал(а):
29.05.2010 09:59
И второе: часть разработчиков работают вне офиса, т.е. доступ получают по внешнему ip; все остальные -- по локалке. Ещё одна дополнительная сложность.
не вижу, в чём тут хоть какая-то сложность.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: git/mercurial, набор проектов

Сообщение t.t »

sash-kan писал(а):
29.05.2010 18:51
t.t писал(а):
29.05.2010 09:59
И второе: часть разработчиков работают вне офиса, т.е. доступ получают по внешнему ip; все остальные -- по локалке. Ещё одна дополнительная сложность.
не вижу, в чём тут хоть какая-то сложность.
Тут уже сложность не технического, а организационного характера. Пока склоняюсь к мысли, что проще всего будет использовать forest.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
kamre
Сообщения: 243
ОС: Win7/Ubuntu 11.10

Re: git/mercurial, набор проектов

Сообщение kamre »

sash-kan писал(а):
28.05.2010 23:13
t.t писал(а):
28.05.2010 21:06
Хочется хранить всё в одном репозитории, но при этом иметь возможность с каждым приложением работать отдельно, как с самостоятельным репозиторием.
я тоже когда-то озадачивался такой «хотелкой».
по здравом размышлении пришёл к выводу, что ну его в баню.
и лучше реализовать что-то вроде проекта-«пускалки».

А как при этом разруливается состояние проекта? Оно состоит из состояний всех подпроектов, т.е. где-то должен храниться snapshot с ревизиями всех подпроектов.

При переключении проекта на другую ревизию каждый подпроект должен переключаться на соответствующую ему ревизию. Как это делается?

Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: git/mercurial, набор проектов

Сообщение t.t »

kamre писал(а):
01.06.2010 17:12
sash-kan писал(а):
28.05.2010 23:13
t.t писал(а):
28.05.2010 21:06
Хочется хранить всё в одном репозитории, но при этом иметь возможность с каждым приложением работать отдельно, как с самостоятельным репозиторием.
я тоже когда-то озадачивался такой «хотелкой».
по здравом размышлении пришёл к выводу, что ну его в баню.
и лучше реализовать что-то вроде проекта-«пускалки».
А как при этом разруливается состояние проекта? Оно состоит из состояний всех подпроектов, т.е. где-то должен храниться snapshot с ревизиями всех подпроектов.

При переключении проекта на другую ревизию каждый подпроект должен переключаться на соответствующую ему ревизию. Как это делается?
А зачем общее состояние проекта и общие ревизии? Я для того и думаю разнести все программы по отдельным "репам", чтобы в этом всём каши не было. Иначе мне смысл самого разделения хранилищ не очень понятен.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
kamre
Сообщения: 243
ОС: Win7/Ubuntu 11.10

Re: git/mercurial, набор проектов

Сообщение kamre »

t.t писал(а):
01.06.2010 17:21
А зачем общее состояние проекта и общие ревизии?

Выделяем библиотеки в подпроекты. Тогда основной проект должен знать с какими ревизиями библиотек сейчас согласован его код.
Получается примерно так:

Код: Выделить всё

project/
       .hg/
       src/
       libA/
          .hg/
          src/
       libB/
          .hg/
          src/


t.t писал(а):
01.06.2010 17:21
Я для того и думаю разнести все программы по отдельным "репам", чтобы в этом всём каши не было. Иначе мне смысл самого разделения хранилищ не очень понятен.

А какой смысл общего репозитория, если программы независимы?
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: git/mercurial, набор проектов

Сообщение t.t »

Нет, они не независимы, из них всех одна прошивка собирается; в частности, библиотеки общие там тоже есть. Я сразу не совсем правильно понял, о чём речь. А так да, ещё один аргумент в пользу forest.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: git/mercurial, набор проектов

Сообщение sash-kan »

kamre писал(а):
01.06.2010 17:12
А как при этом разруливается состояние проекта?
чтобы связать состояния подпроектов — используйте submodules в git-е или forest (рекомендуемый t.t) в mercurial.
то, что описано мной как «пускалка» — это работа с несвязанными (по крайней мере не жёстко связанными) между собой проектами. мне как раз такое и было нужно.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали: