Вопрос

На работе разработчики волей-неволей используют общий доступ к коду.Я не буду говорить "контроль версий", потому что нам не разрешается проверять изменения, пока они не будут готовы к регрессионному тестированию.Чтобы поставить мои личные наборы изменений под контроль версий, мне дали добро на создание моего собственного git и инициализацию клиентского представления perforce depot в качестве репозитория git.

Однако при этом возникают некоторые трудности.

  1. Представление клиента находится во вложенной папке ~, (~/p4), и я хочу поставить ~ также находится под контролем версий, со своей собственной отдельной историей.Я не могу понять, как сохранить историю для ~ отдельно от ~/p4 без использования подмодуля.Проблема с подмодулем заключается в том, что, похоже, мне нужно создать репозиторий, который станет подмодулем, а затем git submodule add <repo> <path>.Но создать репозиторий подмодуля негде, кроме как в ~.Похоже, что нет безопасного места для создания начального клиентского представления хранилища с помощью git p4 clone.

    (Я отталкиваюсь от предположения, что инициализация или клонирование репозитория в подкаталог репозитория git не поддерживается.По крайней мере, я не могу найти ничего авторитетного во вложенных репозиториях git.)

    Редактировать: Это просто игнорирование ~/p4 в репо, размещенном по адресу ~ достаточно, чтобы позволить мне инициализировать вложенный репозиторий в ~/p4?Моя функция __git_ps1 все еще думает, что я нахожусь в репозитории git, когда я посещаю игнорируемый подкаталог репозитория git, поэтому я склонен думать, что нет.

  2. Мне нужно, чтобы "удаленный" репозиторий, созданный git p4 sync, был ветвью в ~/ p4.Мы обязаны хранить весь наш код в ~/p4, чтобы его резервная копия не создавалась.Могу ли я извлечь данные из "удаленной" ветки, которая на самом деле является локальной?

  3. Это просто для удобства, но я подумал, что мог бы чему-то научиться, задав этот вопрос.Для 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, но да, вы можете извлекать данные из "удаленного" репозитория, который является локальным для вашей файловой системы.Что касается "вытягивания" из местных филиалов, то это не вытягивание;извлечение включает в себя выборку и слияние.Если вы опустите выборку, это будет просто слияние, так что на самом деле вы говорите о слиянии из локальной ветки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top