git два репозитория для одного каталога
От: B0FEE664  
Дата: 06.08.20 17:26
Оценка:
Правильно ли я понимаю, что:
— если в каталоге создать две ветки, каждую ветку привязать к отдельному репозиторию (каждую к своему URL),
— в каждой из веток завести свой .ignorelist который будет инвертным ко второй ветке
то тогда можно будет хранить файлы из одного каталога в двух разных репозиториях ?

Кто-нибудь так делал? Есть в этом подводные камни?
И каждый день — без права на ошибку...
Re: git два репозитория для одного каталога
От: vmpire Россия  
Дата: 07.08.20 10:22
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>- если в каталоге создать две ветки, каждую ветку привязать к отдельному репозиторию (каждую к своему URL),

BFE>- в каждой из веток завести свой .ignorelist который будет инвертным ко второй ветке
BFE>то тогда можно будет хранить файлы из одного каталога в двух разных репозиториях ?

BFE>Кто-нибудь так делал? Есть в этом подводные камни?

.ignorelist в каждый момент времени всё равно будет один в физическом каталоге.
А в чём цель такого наворота? Наверняка можно сделать проще.
Если цель в том, чтобы один каталог хранить в двух репозиториях, то и подключите к нему два репозитория и пушьте в оба.
Re[2]: git два репозитория для одного каталога
От: B0FEE664  
Дата: 07.08.20 11:06
Оценка:
Здравствуйте, vmpire, Вы писали:

BFE>>- если в каталоге создать две ветки, каждую ветку привязать к отдельному репозиторию (каждую к своему URL),

BFE>>- в каждой из веток завести свой .ignorelist который будет инвертным ко второй ветке
BFE>>то тогда можно будет хранить файлы из одного каталога в двух разных репозиториях ?
BFE>>Кто-нибудь так делал? Есть в этом подводные камни?
V>.ignorelist в каждый момент времени всё равно будет один в физическом каталоге.
.gitignore будет разный в разных ветках

V>А в чём цель такого наворота? Наверняка можно сделать проще.

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

Хочу хранить локальные настройки проекта (*.vcxproj.user, *.pro.user.* и т.п.) в отдельном репозитории, чтобы без опаски вызывать git clean -d -n -X .
И каждый день — без права на ошибку...
Re[3]: git два репозитория для одного каталога
От: Mystic Artifact  
Дата: 07.08.20 11:10
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Хочу хранить локальные настройки проекта (*.vcxproj.user, *.pro.user.* и т.п.) в отдельном репозитории, чтобы без опаски вызывать git clean -d -n -X .

Заигрывания с git clean в рабочих директориях всегда в конце концов заканчиваются одним и тем же: потерей данных.
Re[4]: git два репозитория для одного каталога
От: B0FEE664  
Дата: 07.08.20 11:48
Оценка:
Здравствуйте, Mystic Artifact, Вы писали:

BFE>>Хочу хранить локальные настройки проекта (*.vcxproj.user, *.pro.user.* и т.п.) в отдельном репозитории, чтобы без опаски вызывать git clean -d -n -X .

MA> Заигрывания с git clean в рабочих директориях всегда в конце концов заканчиваются одним и тем же: потерей данных.

как и любое другое удаление файлов.
И каждый день — без права на ошибку...
Re: git два репозитория для одного каталога
От: B0FEE664  
Дата: 07.08.20 12:44
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Правильно ли я понимаю, что:

BFE>- если в каталоге создать две ветки, каждую ветку привязать к отдельному репозиторию (каждую к своему URL),
BFE>- в каждой из веток завести свой .ignorelist который будет инвертным ко второй ветке
BFE>то тогда можно будет хранить файлы из одного каталога в двух разных репозиториях ?

BFE>Кто-нибудь так делал? Есть в этом подводные камни?


Поставил эксперимент. git снова не смог.
Более того: переключение с одной ветки на другую и обратно приводит к потере изменений файла !

Содержимое файла testfile2.txt потеряно безвозвратно после:
git checkout repo2_branch
git checkout master

  log

c:\Temp\test1\repo_1>
c:\Temp\test1\repo_1>
c:\Temp\test1\repo_1>git --version
git version 2.27.0.windows.1

c:\Temp\test1\repo_1>git branch -vv -a
* master ae0feee [origin/master] testfile1 — 2
repo2_branch 272cf82 [local_repo2/repo2_branch] delete repo2_file.txt
remotes/local_repo2/repo2_branch 272cf82 delete repo2_file.txt
remotes/origin/master ae0feee testfile1 — 2

c:\Temp\test1\repo_1>git remote -v
local_repo2 file://c:\Temp\repo_2 (fetch)
local_repo2 file://c:\Temp\repo_2 (push)
origin file://c:\Temp\repo_1 (fetch)
origin file://c:\Temp\repo_1 (push)

c:\Temp\test1\repo_1>git ls-files
.gitignore
testfile1.txt

c:\Temp\test1\repo_1>git status --ignored --porcelain -s
!! testfile2.txt

c:\Temp\test1\repo_1>type .gitignore
testfile2.txt
c:\Temp\test1\repo_1>type testfile2.txt
testfile2 — new version

c:\Temp\test1\repo_1>git checkout repo2_branch
Switched to branch 'repo2_branch'
Your branch is up to date with 'local_repo2/repo2_branch'.

c:\Temp\test1\repo_1>git ls-files
.gitignore
testfile2.txt

c:\Temp\test1\repo_1>git status --ignored --porcelain -s

c:\Temp\test1\repo_1>type .gitignore
testfile1.txt
c:\Temp\test1\repo_1>type testfile2.txt
testfile2
1
c:\Temp\test1\repo_1>git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.

c:\Temp\test1\repo_1>git ls-files
.gitignore
testfile1.txt

c:\Temp\test1\repo_1>git status --ignored --porcelain -s

c:\Temp\test1\repo_1>type .gitignore
testfile2.txt
c:\Temp\test1\repo_1>dir
Volume in drive C is Windows
Volume Serial Number is 4CF5-5CB5

Directory of c:\Temp\test1\repo_1

2020-08-07 14:28 <DIR> .
2020-08-07 14:28 <DIR> ..
2020-08-07 14:28 13 .gitignore
2020-08-07 14:28 14 testfile1.txt
2 File(s) 27 bytes
2 Dir(s) 276 013 813 760 bytes free

c:\Temp\test1\repo_1>


Вообще говоря это ошибка в git. git не должен затирать новые данные файла содержимым файла из репозитория...

Так же не понятно, зачем удалять локальные файлы, если они находятся в .gitignore, хотя, это, конечно, не ошибка, а фича, но всё равно не приятно.
И каждый день — без права на ошибку...
Re[3]: git два репозитория для одного каталога
От: vmpire Россия  
Дата: 07.08.20 13:24
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Хочу хранить локальные настройки проекта (*.vcxproj.user, *.pro.user.* и т.п.) в отдельном репозитории, чтобы без опаски вызывать git clean -d -n -X .


Если очень хочется именно в другом репозитории (хоть я лично и не понимаю зачем, ну да ладно), то сделайте hard link нужных файлов в другой каталог и свяжите его с другим репозиторием.
А в основном добавьте их в .gitignore.
Re[4]: git два репозитория для одного каталога
От: B0FEE664  
Дата: 07.08.20 13:39
Оценка:
Здравствуйте, vmpire, Вы писали:

BFE>>Хочу хранить локальные настройки проекта (*.vcxproj.user, *.pro.user.* и т.п.) в отдельном репозитории, чтобы без опаски вызывать git clean -d -n -X .

V>Если очень хочется именно в другом репозитории (хоть я лично и не понимаю зачем, ну да ладно),

Даже если в том же самом репозитории, но в другой ветке, то что это изменит? Если в одной ветке файл находится в .gitignore, а в другой его в .gitignore нет, то при переключении с ветку на ветку (с первой на вторую), содержимое файла будет затираться версией лежащей во второй ветке.

V>то сделайте hard link нужных файлов в другой каталог и свяжите его с другим репозиторием.

V>А в основном добавьте их в .gitignore.

Раздумываю над этим.
И каждый день — без права на ошибку...
Re[5]: git два репозитория для одного каталога
От: vmpire Россия  
Дата: 07.08.20 16:23
Оценка:
Здравствуйте, B0FEE664, Вы писали:

V>>Если очень хочется именно в другом репозитории (хоть я лично и не понимаю зачем, ну да ладно),


BFE>Даже если в том же самом репозитории, но в другой ветке, то что это изменит? Если в одной ветке файл находится в .gitignore, а в другой его в .gitignore нет, то при переключении с ветку на ветку (с первой на вторую), содержимое файла будет затираться версией лежащей во второй ветке.

Я именно это и имел в виду в прошлом ответе: ".ignorelist в каждый момент времени всё равно будет один в физическом каталоге."

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

Но тут каждый настраивает так, как ему хочется.
Гит работает по каталогам, так что можно, как я говорил, использовать под сеттинги отдельный каталог.
Или можно попробовать приспособить сабмодули, но у них должен быть подкаталог в каталоге проекта, то есть, на расположение файлов будут ограничения.
Но можно в этот каталог положить настройки вместе с самим солюшном.
Re[6]: git два репозитория для одного каталога
От: B0FEE664  
Дата: 07.08.20 17:23
Оценка:
Здравствуйте, vmpire, Вы писали:

V>>>Если очень хочется именно в другом репозитории (хоть я лично и не понимаю зачем, ну да ладно),

BFE>>Даже если в том же самом репозитории, но в другой ветке, то что это изменит? Если в одной ветке файл находится в .gitignore, а в другой его в .gitignore нет, то при переключении с ветку на ветку (с первой на вторую), содержимое файла будет затираться версией лежащей во второй ветке.
V>Я именно это и имел в виду в прошлом ответе: ".ignorelist в каждый момент времени всё равно будет один в физическом каталоге."

В этом-то как раз ничего страшного не было бы, если бы git не затирал локально изменённые файлы из .gitignore. Фактически — это опасная ошибка в git.

V>Если проект общий, то общие пользовательский настройки (не относящиеся к проекту) можно держать онлайн,

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

V>Но тут каждый настраивает так, как ему хочется.

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

Как?

Я вот нашёл одно решение вот тут, но оно несколько корявое, так как получается один и тот же .gitignore, а хочется иметь разные.
И каждый день — без права на ошибку...
Re: git два репозитория для одного каталога
От: VladCore  
Дата: 07.08.20 17:25
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Правильно ли я понимаю, что:

BFE>- если в каталоге создать две ветки, каждую ветку привязать к отдельному репозиторию (каждую к своему URL),
BFE>- в каждой из веток завести свой .ignorelist который будет инвертным ко второй ветке
BFE>то тогда можно будет хранить файлы из одного каталога в двух разных репозиториях ?

BFE>Кто-нибудь так делал? Есть в этом подводные камни?


Очень интересное решение, я бы даже сказал гениальное.

Проблему будешь озвучивать?
Re[2]: git два репозитория для одного каталога
От: B0FEE664  
Дата: 07.08.20 17:31
Оценка:
Здравствуйте, VladCore, Вы писали:

VC>Очень интересное решение, я бы даже сказал гениальное.

Гениальное-то оно. конечно, гениальное. Только не работает.

VC>Проблему будешь озвучивать?

Почитайте все ветки.
И каждый день — без права на ошибку...
Re[7]: git два репозитория для одного каталога
От: vmpire Россия  
Дата: 07.08.20 18:10
Оценка:
Здравствуйте, B0FEE664, Вы писали:

V>>Если проект общий, то общие пользовательский настройки (не относящиеся к проекту) можно держать онлайн,

BFE>Что значит эта фраза? Вот есть какой-то проект, в этом проекте есть файл с абсолютным путём до компилятора. Этот путь на каждой машине свой. Смысла добавлять этот файл в общий проект нет. Где хранить этот файл, если учесть, что такой файл не один. Эти файлы иногда меняется и хочется иметь историю их изменений. Причём в отдельный каталог их не вынести из проекта, так как они создаются сторонними инструментами.
Я думал, речь идёт о пользовтельских гастройках типа xxx.csproj.user. Если это настройки компиляции — тут логика другая
Конкретно настройки компиляции я бы решал (да и, собственно, решал) переменными окружения и автоопределением расположения, где такое возможно.

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

BFE>Как?
Как я писал ранее: сделать для таких файлов отдельный каталог, файлы туда смапить хардлинками, а этот второй каталог держать в отдельном репозитории.
Re[3]: git два репозитория для одного каталога
От: Grelkin  
Дата: 09.08.20 09:29
Оценка:
Здравствуйте, B0FEE664, Вы писали:

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


BFE>Хочу хранить локальные настройки проекта (*.vcxproj.user, *.pro.user.* и т.п.) в отдельном репозитории, чтобы без опаски вызывать git clean -d -n -X .



Patterns which are specific to a particular repository but which do not need to be shared with other related repositories (e.g., auxiliary files that live inside the repository but are specific to one user’s workflow) should go into the $GIT_DIR/info/exclude file.


https://git-scm.com/docs/gitignore
Re[4]: git два репозитория для одного каталога
От: B0FEE664  
Дата: 10.08.20 08:06
Оценка:
Здравствуйте, Grelkin, Вы писали:

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

BFE>>Хочу хранить локальные настройки проекта (*.vcxproj.user, *.pro.user.* и т.п.) в отдельном репозитории, чтобы без опаски вызывать git clean -d -n -X .

G>

G>Patterns which are specific to a particular repository but which do not need to be shared with other related repositories (e.g., auxiliary files that live inside the repository but are specific to one user’s workflow) should go into the $GIT_DIR/info/exclude file.

G>https://git-scm.com/docs/gitignore

Я не понял, чем мне это поможет. Я могу добавить файлы в $GIT_DIR/info/exclude, но разве $GIT_DIR/info/exclude зависит от ветки?
И каждый день — без права на ошибку...
Re[8]: git два репозитория для одного каталога
От: B0FEE664  
Дата: 10.08.20 08:16
Оценка:
Здравствуйте, vmpire, Вы писали:

V>>>Если проект общий, то общие пользовательский настройки (не относящиеся к проекту) можно держать онлайн,

BFE>>Что значит эта фраза? Вот есть какой-то проект, в этом проекте есть файл с абсолютным путём до компилятора. Этот путь на каждой машине свой. Смысла добавлять этот файл в общий проект нет. Где хранить этот файл, если учесть, что такой файл не один. Эти файлы иногда меняется и хочется иметь историю их изменений. Причём в отдельный каталог их не вынести из проекта, так как они создаются сторонними инструментами.
V>Я думал, речь идёт о пользовтельских гастройках типа xxx.csproj.user. Если это настройки компиляции — тут логика другая
V>Конкретно настройки компиляции я бы решал (да и, собственно, решал) переменными окружения и автоопределением расположения, где такое возможно.

Да какая разница, для чего я использую файлы? Задачу я могу решить им так и эдак. Да могу просто локально хранить все файлы с последовательно проимервованными по дате каталогами — скрипт не сложно написать.

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

BFE>>Как?
V>Как я писал ранее: сделать для таких файлов отдельный каталог, файлы туда смапить хардлинками, а этот второй каталог держать в отдельном репозитории.

Но ведь тогда хардлинки будут автоматически удалятся при выполнении команды git clean и каждый раз их придётся восстанавливать.
И каждый день — без права на ошибку...
Re: git два репозитория для одного каталога
От: Basil2 Россия https://starostin.msk.ru
Дата: 10.08.20 08:20
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>то тогда можно будет хранить файлы из одного каталога в двух разных репозиториях ?

BFE>Хочу хранить локальные настройки проекта (*.vcxproj.user, *.pro.user.* и т.п.) в отдельном репозитории, чтобы без опаски вызывать git clean -d -n -X .

Храните настройки в обычной папке с синхронизацией в облако, типа дроп-бокса или яндекс-диска. Вам же для *.vcxproj.user не нужна история изменений, я так полагаю. Хотя тот же яндекс-диск все равно хранит историю за 14 дней.
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Re[9]: git два репозитория для одного каталога
От: vmpire Россия  
Дата: 10.08.20 11:04
Оценка:
Здравствуйте, B0FEE664, Вы писали:

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

BFE>>>Как?
V>>Как я писал ранее: сделать для таких файлов отдельный каталог, файлы туда смапить хардлинками, а этот второй каталог держать в отдельном репозитории.

BFE>Но ведь тогда хардлинки будут автоматически удалятся при выполнении команды git clean и каждый раз их придётся восстанавливать.

Не должны, вроде, если эти файлы в .gitignore.
Re: git два репозитория для одного каталога
От: Mr.Delphist  
Дата: 10.08.20 12:39
Оценка:
Здравствуйте, B0FEE664, Вы писали:


BFE>Правильно ли я понимаю, что:

BFE>- если в каталоге создать две ветки, каждую ветку привязать к отдельному репозиторию (каждую к своему URL),
BFE>- в каждой из веток завести свой .ignorelist который будет инвертным ко второй ветке
BFE>то тогда можно будет хранить файлы из одного каталога в двух разных репозиториях ?

BFE>Кто-нибудь так делал? Есть в этом подводные камни?


Можно при желании сделать два репки: SVN и git

Но лучше снять лыжи и выйти из гамака.
Re[2]: git два репозитория для одного каталога
От: B0FEE664  
Дата: 10.08.20 14:50
Оценка:
Здравствуйте, Mr.Delphist, Вы писали:

BFE>>Кто-нибудь так делал? Есть в этом подводные камни?

MD>Можно при желании сделать два репки: SVN и git
MD>Но лучше снять лыжи и выйти из гамака.

Ну причём тут лыжи и гамак?
Фактически это обычный сценарий и известная (с 2010-ого года) проблема git : вот описание.
Вот текущее состояние.
И каждый день — без права на ошибку...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.