2016-11-09 7 views
0

tl; dr; Я хочу сохранить историю для файлов, перенесенных в git, включая историю из более ранних интеграций. т.е. git p4 clone таким образом, что git log --all --follow <file> == p4 filelog -li <file>git p4 история клонов, включая историю интеграции

Longer версия:

У меня есть проект в perforce, который включает в себя файлы, которые были перемещены и скопированные вокруг других проектов в reposotory в прошлом.

p4 filelog -l <file2> 

показывает историю для файла (-l для длинной формы) в его текущем положении. Файлы перемещаются (копируются) с помощью p4 integrate, например.

p4 integrate <file1> file2> 

Чтобы увидеть историю до переезда вы используете:

p4 filelog -li <file2> 

Эквивалент git команда:

git log --follow <file2> 

Теперь, если я клонировать часть проекта perforce с помощью:

git p4 clone //depot/some/path/[email protected] . 

Я получаю полную историю для файла, как и для того же файла, в текущем каталоге в perforce.

(Вы получаете одну фиксацию для файла в настоящее время не @all см Getting the whole files history with git-p4)

Как получить git log --follow <file2> , чтобы дать мне всю историю, что я видел с p4 filelog -li?

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

Что нужно сделать, чтобы добавить опцию к git p4 clone, которая скопировала историю файлов через интеграцию, чтобы --follow работает?

Это очень похоже на git p4: migrate full history - including integration history

В отличие от этого вопроса я всегда переехал файлы в хранилище с использованием p4 интеграции так история файл, записанный по необходимости цела. Это должно облегчить мою задачу. Хотя я не уверен, что это происходит на практике.

+0

По существу, Perforce записывает больше информации о работе, которую вы сделали, чем git. Есть действия, которые вы, возможно, приняли, что git просто не может представить. Почему бы вам просто не оставить свой сервер Perforce онлайн, чтобы вы могли проконсультироваться с ним для исторического анализа в будущем, даже после того, как ваша новая работа будет совершена в git? –

+0

git может представлять deltas для файлов, в которых ему просто нужно место для файла. Я разрешу, что местоположение не может быть правильным, если местоположение находится в дереве, которое не существует в git repo, но предположительно мы можем подделать файл как находящийся в местоположении, которое (например, в ветке). –

+0

Целью перехода некоторого кода в git было бы открыть исходный код, оставив при этом закрытый источник репо. Таким образом, внешние пользователи git не будут иметь к нему доступа. –

ответ

1

Git работает иначе, чем Perforce, и не будет отслеживать копии файлов и переименовывать, поэтому нет способа импортировать эту информацию через git p4. Вместо этого Git может автоматически идентифицировать переименование файлов и/или копии при анализе коммитов.Очевидно, для этого требуется больше обработки, поэтому по умолчанию она не включена.

Что вы ищете, это аргументы -M, -C и --find-copies-harder. В общем случае вы хотите использовать первые два аргумента в формате -M85, где число 85 представляет собой количество кода, которое должно быть равным, считая, что файлы одинаковы. Это позволяет обнаруживать файлы, которые были переименованы и также изменены в одной и той же фиксации. Обратите внимание, что если вы включите -C, вам не нужно включать -M.

Гит р4 обеспечивает параметры конфигурации detectCopies и detectCopiesHarder для того, чтобы обнаружить это и представить изменения, используя p4 integrate вместо p4 delete и/или p4 add.

+0

Вы говорите о передаче данных из git в perforce или from perforce to git? Ваш последний комментарий «submit using p4 integrate» предлагает от git к perforce, но я иду другим путем. –

+0

Просто добавьте дополнительную информацию. Эта часть не имеет отношения к вашей цели. – Vitor

 Смежные вопросы

  • Нет связанных вопросов^_^