Правильно ли я понимаю, что:
— если в каталоге создать две ветки, каждую ветку привязать к отдельному репозиторию (каждую к своему URL),
— в каждой из веток завести свой .ignorelist который будет инвертным ко второй ветке
то тогда можно будет хранить файлы из одного каталога в двух разных репозиториях ?
Кто-нибудь так делал? Есть в этом подводные камни?
Здравствуйте, B0FEE664, Вы писали:
BFE>- если в каталоге создать две ветки, каждую ветку привязать к отдельному репозиторию (каждую к своему URL), BFE>- в каждой из веток завести свой .ignorelist который будет инвертным ко второй ветке BFE>то тогда можно будет хранить файлы из одного каталога в двух разных репозиториях ?
BFE>Кто-нибудь так делал? Есть в этом подводные камни?
.ignorelist в каждый момент времени всё равно будет один в физическом каталоге.
А в чём цель такого наворота? Наверняка можно сделать проще.
Если цель в том, чтобы один каталог хранить в двух репозиториях, то и подключите к нему два репозитория и пушьте в оба.
Здравствуйте, vmpire, Вы писали:
BFE>>- если в каталоге создать две ветки, каждую ветку привязать к отдельному репозиторию (каждую к своему URL), BFE>>- в каждой из веток завести свой .ignorelist который будет инвертным ко второй ветке BFE>>то тогда можно будет хранить файлы из одного каталога в двух разных репозиториях ? BFE>>Кто-нибудь так делал? Есть в этом подводные камни? V>.ignorelist в каждый момент времени всё равно будет один в физическом каталоге.
.gitignore будет разный в разных ветках
V>А в чём цель такого наворота? Наверняка можно сделать проще. V>Если цель в том, чтобы один каталог хранить в двух репозиториях, то и подключите к нему два репозитория и пушьте в оба.
Хочу хранить локальные настройки проекта (*.vcxproj.user, *.pro.user.* и т.п.) в отдельном репозитории, чтобы без опаски вызывать git clean -d -n -X .
Здравствуйте, B0FEE664, Вы писали:
BFE>Хочу хранить локальные настройки проекта (*.vcxproj.user, *.pro.user.* и т.п.) в отдельном репозитории, чтобы без опаски вызывать git clean -d -n -X .
Заигрывания с git clean в рабочих директориях всегда в конце концов заканчиваются одним и тем же: потерей данных.
Здравствуйте, Mystic Artifact, Вы писали:
BFE>>Хочу хранить локальные настройки проекта (*.vcxproj.user, *.pro.user.* и т.п.) в отдельном репозитории, чтобы без опаски вызывать git clean -d -n -X . MA> Заигрывания с git clean в рабочих директориях всегда в конце концов заканчиваются одним и тем же: потерей данных.
Здравствуйте, B0FEE664, Вы писали: BFE>Правильно ли я понимаю, что: BFE>- если в каталоге создать две ветки, каждую ветку привязать к отдельному репозиторию (каждую к своему URL), BFE>- в каждой из веток завести свой .ignorelist который будет инвертным ко второй ветке BFE>то тогда можно будет хранить файлы из одного каталога в двух разных репозиториях ? BFE>Кто-нибудь так делал? Есть в этом подводные камни?
Поставил эксперимент. git снова не смог.
Более того: переключение с одной ветки на другую и обратно приводит к потере изменений файла !
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'.
Здравствуйте, B0FEE664, Вы писали:
BFE>Хочу хранить локальные настройки проекта (*.vcxproj.user, *.pro.user.* и т.п.) в отдельном репозитории, чтобы без опаски вызывать git clean -d -n -X .
Если очень хочется именно в другом репозитории (хоть я лично и не понимаю зачем, ну да ладно), то сделайте hard link нужных файлов в другой каталог и свяжите его с другим репозиторием.
А в основном добавьте их в .gitignore.
Здравствуйте, vmpire, Вы писали:
BFE>>Хочу хранить локальные настройки проекта (*.vcxproj.user, *.pro.user.* и т.п.) в отдельном репозитории, чтобы без опаски вызывать git clean -d -n -X . V>Если очень хочется именно в другом репозитории (хоть я лично и не понимаю зачем, ну да ладно),
Даже если в том же самом репозитории, но в другой ветке, то что это изменит? Если в одной ветке файл находится в .gitignore, а в другой его в .gitignore нет, то при переключении с ветку на ветку (с первой на вторую), содержимое файла будет затираться версией лежащей во второй ветке.
V>то сделайте hard link нужных файлов в другой каталог и свяжите его с другим репозиторием. V>А в основном добавьте их в .gitignore.
Здравствуйте, B0FEE664, Вы писали:
V>>Если очень хочется именно в другом репозитории (хоть я лично и не понимаю зачем, ну да ладно),
BFE>Даже если в том же самом репозитории, но в другой ветке, то что это изменит? Если в одной ветке файл находится в .gitignore, а в другой его в .gitignore нет, то при переключении с ветку на ветку (с первой на вторую), содержимое файла будет затираться версией лежащей во второй ветке.
Я именно это и имел в виду в прошлом ответе: ".ignorelist в каждый момент времени всё равно будет один в физическом каталоге."
Другое дело, что я вообще не понимаю смысла хранить локальные настройки в отдельном репозитории (или ветке).
Если проект личный, то можно настройки положить в гит вместе с проектом, в тот же репозитории и ветку.
Если проект общий, то общие пользовательский настройки (не относящиеся к проекту) можно держать онлайн, а проектные настройки, которые общие, должны быть всё равнео не в .user файлах.
Но тут каждый настраивает так, как ему хочется.
Гит работает по каталогам, так что можно, как я говорил, использовать под сеттинги отдельный каталог.
Или можно попробовать приспособить сабмодули, но у них должен быть подкаталог в каталоге проекта, то есть, на расположение файлов будут ограничения.
Но можно в этот каталог положить настройки вместе с самим солюшном.
Здравствуйте, vmpire, Вы писали:
V>>>Если очень хочется именно в другом репозитории (хоть я лично и не понимаю зачем, ну да ладно), BFE>>Даже если в том же самом репозитории, но в другой ветке, то что это изменит? Если в одной ветке файл находится в .gitignore, а в другой его в .gitignore нет, то при переключении с ветку на ветку (с первой на вторую), содержимое файла будет затираться версией лежащей во второй ветке. V>Я именно это и имел в виду в прошлом ответе: ".ignorelist в каждый момент времени всё равно будет один в физическом каталоге."
В этом-то как раз ничего страшного не было бы, если бы git не затирал локально изменённые файлы из .gitignore. Фактически — это опасная ошибка в git.
V>Если проект общий, то общие пользовательский настройки (не относящиеся к проекту) можно держать онлайн,
Что значит эта фраза? Вот есть какой-то проект, в этом проекте есть файл с абсолютным путём до компилятора. Этот путь на каждой машине свой. Смысла добавлять этот файл в общий проект нет. Где хранить этот файл, если учесть, что такой файл не один. Эти файлы иногда меняется и хочется иметь историю их изменений. Причём в отдельный каталог их не вынести из проекта, так как они создаются сторонними инструментами.
V>Но тут каждый настраивает так, как ему хочется. V>Гит работает по каталогам, так что можно, как я говорил, использовать под сеттинги отдельный каталог.
Как?
Я вот нашёл одно решение вот тут, но оно несколько корявое, так как получается один и тот же .gitignore, а хочется иметь разные.
Здравствуйте, B0FEE664, Вы писали:
BFE>Правильно ли я понимаю, что: BFE>- если в каталоге создать две ветки, каждую ветку привязать к отдельному репозиторию (каждую к своему URL), BFE>- в каждой из веток завести свой .ignorelist который будет инвертным ко второй ветке BFE>то тогда можно будет хранить файлы из одного каталога в двух разных репозиториях ?
BFE>Кто-нибудь так делал? Есть в этом подводные камни?
Очень интересное решение, я бы даже сказал гениальное.
Здравствуйте, VladCore, Вы писали:
VC>Очень интересное решение, я бы даже сказал гениальное.
Гениальное-то оно. конечно, гениальное. Только не работает.
VC>Проблему будешь озвучивать?
Почитайте все ветки.
Здравствуйте, B0FEE664, Вы писали:
V>>Если проект общий, то общие пользовательский настройки (не относящиеся к проекту) можно держать онлайн, BFE>Что значит эта фраза? Вот есть какой-то проект, в этом проекте есть файл с абсолютным путём до компилятора. Этот путь на каждой машине свой. Смысла добавлять этот файл в общий проект нет. Где хранить этот файл, если учесть, что такой файл не один. Эти файлы иногда меняется и хочется иметь историю их изменений. Причём в отдельный каталог их не вынести из проекта, так как они создаются сторонними инструментами.
Я думал, речь идёт о пользовтельских гастройках типа xxx.csproj.user. Если это настройки компиляции — тут логика другая
Конкретно настройки компиляции я бы решал (да и, собственно, решал) переменными окружения и автоопределением расположения, где такое возможно.
V>>Гит работает по каталогам, так что можно, как я говорил, использовать под сеттинги отдельный каталог. BFE>Как?
Как я писал ранее: сделать для таких файлов отдельный каталог, файлы туда смапить хардлинками, а этот второй каталог держать в отдельном репозитории.
Здравствуйте, 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.
Здравствуйте, 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.
Здравствуйте, vmpire, Вы писали:
V>>>Если проект общий, то общие пользовательский настройки (не относящиеся к проекту) можно держать онлайн, BFE>>Что значит эта фраза? Вот есть какой-то проект, в этом проекте есть файл с абсолютным путём до компилятора. Этот путь на каждой машине свой. Смысла добавлять этот файл в общий проект нет. Где хранить этот файл, если учесть, что такой файл не один. Эти файлы иногда меняется и хочется иметь историю их изменений. Причём в отдельный каталог их не вынести из проекта, так как они создаются сторонними инструментами. V>Я думал, речь идёт о пользовтельских гастройках типа xxx.csproj.user. Если это настройки компиляции — тут логика другая V>Конкретно настройки компиляции я бы решал (да и, собственно, решал) переменными окружения и автоопределением расположения, где такое возможно.
Да какая разница, для чего я использую файлы? Задачу я могу решить им так и эдак. Да могу просто локально хранить все файлы с последовательно проимервованными по дате каталогами — скрипт не сложно написать.
V>>>Гит работает по каталогам, так что можно, как я говорил, использовать под сеттинги отдельный каталог. BFE>>Как? V>Как я писал ранее: сделать для таких файлов отдельный каталог, файлы туда смапить хардлинками, а этот второй каталог держать в отдельном репозитории.
Но ведь тогда хардлинки будут автоматически удалятся при выполнении команды git clean и каждый раз их придётся восстанавливать.
Здравствуйте, B0FEE664, Вы писали:
BFE>то тогда можно будет хранить файлы из одного каталога в двух разных репозиториях ? BFE>Хочу хранить локальные настройки проекта (*.vcxproj.user, *.pro.user.* и т.п.) в отдельном репозитории, чтобы без опаски вызывать git clean -d -n -X .
Храните настройки в обычной папке с синхронизацией в облако, типа дроп-бокса или яндекс-диска. Вам же для *.vcxproj.user не нужна история изменений, я так полагаю. Хотя тот же яндекс-диск все равно хранит историю за 14 дней.
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Здравствуйте, B0FEE664, Вы писали:
V>>>>Гит работает по каталогам, так что можно, как я говорил, использовать под сеттинги отдельный каталог. BFE>>>Как? V>>Как я писал ранее: сделать для таких файлов отдельный каталог, файлы туда смапить хардлинками, а этот второй каталог держать в отдельном репозитории.
BFE>Но ведь тогда хардлинки будут автоматически удалятся при выполнении команды git clean и каждый раз их придётся восстанавливать.
Не должны, вроде, если эти файлы в .gitignore.
BFE>Правильно ли я понимаю, что: BFE>- если в каталоге создать две ветки, каждую ветку привязать к отдельному репозиторию (каждую к своему URL), BFE>- в каждой из веток завести свой .ignorelist который будет инвертным ко второй ветке BFE>то тогда можно будет хранить файлы из одного каталога в двух разных репозиториях ?
BFE>Кто-нибудь так делал? Есть в этом подводные камни?
Здравствуйте, Mr.Delphist, Вы писали:
BFE>>Кто-нибудь так делал? Есть в этом подводные камни? MD>Можно при желании сделать два репки: SVN и git MD>Но лучше снять лыжи и выйти из гамака.
Ну причём тут лыжи и гамак?
Фактически это обычный сценарий и известная (с 2010-ого года) проблема git : вот описание.
Вот текущее состояние.