Вопросы планирования репо Git
Вопрос
На работе разработчики волей-неволей используют общий доступ к коду.Я не буду говорить "контроль версий", потому что нам не разрешается проверять изменения, пока они не будут готовы к регрессионному тестированию.Чтобы поставить мои личные наборы изменений под контроль версий, мне дали добро на создание моего собственного git и инициализацию клиентского представления perforce depot в качестве репозитория git.
Однако при этом возникают некоторые трудности.
Представление клиента находится во вложенной папке
~
, (~/p4
), и я хочу поставить~
также находится под контролем версий, со своей собственной отдельной историей.Я не могу понять, как сохранить историю для~
отдельно от~/p4
без использования подмодуля.Проблема с подмодулем заключается в том, что, похоже, мне нужно создать репозиторий, который станет подмодулем, а затемgit submodule add <repo> <path>
.Но создать репозиторий подмодуля негде, кроме как в~
.Похоже, что нет безопасного места для создания начального клиентского представления хранилища с помощью git p4 clone.(Я отталкиваюсь от предположения, что инициализация или клонирование репозитория в подкаталог репозитория git не поддерживается.По крайней мере, я не могу найти ничего авторитетного во вложенных репозиториях git.)
Редактировать: Это просто игнорирование
~/p4
в репо, размещенном по адресу~
достаточно, чтобы позволить мне инициализировать вложенный репозиторий в~/p4
?Моя функция __git_ps1 все еще думает, что я нахожусь в репозитории git, когда я посещаю игнорируемый подкаталог репозитория git, поэтому я склонен думать, что нет.Мне нужно, чтобы "удаленный" репозиторий, созданный git p4 sync, был ветвью в ~/ p4.Мы обязаны хранить весь наш код в ~/p4, чтобы его резервная копия не создавалась.Могу ли я извлечь данные из "удаленной" ветки, которая на самом деле является локальной?
Это просто для удобства, но я подумал, что мог бы чему-то научиться, задав этот вопрос.Для 99% проекта я просто хочу начать с редакции p4 head в качестве начального объекта фиксации.Для остальных 1% я хотел бы просмотреть всю историю p4, чтобы я мог просмотреть ее в git.Итак, после того, как я закончу инициализацию, начальная фиксация ветки remotes / p4 / master будет содержать:
revision 1 of //depot/prod/Foo/Bar/* revision X of other files in //depot/prod/*, where X is the head revision
и тот
remotes/p4/master
ветвь содержит Y коммитов, где Y - количество списков изменений, в которых находился файл//depot/prod/Foo/Bar/*
, причем каждый коммит в истории соответствует одному из этих списков изменений p4, а HEAD выглядит как head p4.
Редактировать:ответ мигар меня не совсем устроил.
Я инициализировал ~ и проверил несколько коммитов для него.Я проигнорировал ~/p4, а ~/p4 нет ни в одном объекте фиксации.=:
[~@ernie02] (master) $ git show HEAD:p4
fatal: Path 'p4' exists on disk, but not in 'HEAD'.
Затем я зашел в ~/ p4 / prod, ветку, которую я хочу проверить.Но это репо не работает:
[~/p4/prod@ernie02] (master) $ git log
(shows the log for the repo rooted at ~)
[~/p4/prod@ernie02] (master) $ git init
Initialized empty Git repository in ~/p4/prod/.git/
[~/p4/prod@ernie02] (master) $ git log
fatal: bad default revision 'HEAD'
Править править:Упс, я забыл кое-что передать ~/p4/prod
.Сейчас я пытаюсь синхронизировать git p4 //depot / prod с ним...
Решение
В ответ на # 1, если вы действительно хотите иметь весь свой домашний каталог в репозитории git, но иметь ~/p4 в отдельном репозитории, просто добавьте "p4" в .git_ignore
в вашем домашнем каталоге и создайте другое репозиторий на p4:
$ cd ~
$ git init
$ echo "p4" > .git_ignore
$ git add .git_ignore
# add all files/directories except p4
$ git commit
$ cd p4
$ git init
$ git add .
$ git commit
Я не совсем понимаю пункт 2, но да, вы можете извлекать данные из "удаленного" репозитория, который является локальным для вашей файловой системы.Что касается "вытягивания" из местных филиалов, то это не вытягивание;извлечение включает в себя выборку и слияние.Если вы опустите выборку, это будет просто слияние, так что на самом деле вы говорите о слиянии из локальной ветки.