2015-02-19 1 views
4

Я только начал использовать Perforce после использования Git в течение года. Есть ли какой-либо эквивалент локальной фиксации git для моей ветви в perforce.Персик-эквивалент git local commit

По существу, если я хочу работать над сложной задачей, которая может потребовать отмены и повторения моих конкретных изменений, есть ли способ сделать это в Perforce? То, как я сделаю это в Git, будет делать мои изменения в ветке и иметь несколько коммитов внутри ветки до слияния в master.

+0

Я прошел через http://stackoverflow.com/questions/17267218/perforce-for-git-users, но, похоже, не ответил на эту конкретную проблему. Если это невозможно, существует ли потенциальное обходное решение? – user2829702

ответ

2

0 Думаете, p4 shelve может быть вам полезной.

Более длинный ответ:

То, как p4 работы является то, что вы должны разблокировать файл, используя p4 edit или добавить новый файл с помощью p4 add. Это создаст список изменений , который в основном имеет все файлы, которые будут поставлены для вашей следующей фиксации.

p4 submit можно использовать для толкания (по терминологии git) всех изменений в вашем списке изменений в хранилище/хранилище.

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

См. Ссылку на команду p4 shelve для получения более подробной информации.

+0

Кажется, сейчас это путь. Я посмотрю, пытаясь разделить разные полки. – user2829702

2

Классический способ сделать это в Perforce - это сделать именно то, что вы говорите, - создать ветвь, подчиниться этой ветке, а затем объединить ее обратно. Одно отличие от Git заключается в том, что каждое изменение, внесенное в вашу ветку, является постоянным, а последующие изменения основываются на более ранних версиях - вы не отменяете предыдущие фиксации, удаляя их из истории, вы просто делаете дополнительные версии. Другое изменение заключается в том, что когда вы сливаетесь назад, вы создаете новый список изменений в целевой ветке, содержащий общую сумму всех изменений, которые вы объединяете из источника, - вместо того, чтобы сжимать изменения вместе в вашей ветке, вы раздавите изменения при слиянии. Вы можете выполнить слияние поэтапно и даже объединиться в другом порядке с того момента, когда изменения произошли в вашем филиале, так что история в основной ветке может отличаться от истории в вашей ветке (но она поддерживает указатели обратно в вашу ветку также).

Текущая публичная бета-версия Perforce (2015.1) предлагает более подход, подобный Git, в котором вы могли бы отделить локальный репозиторий Perforce, внести изменения и, возможно, переписать свою историю, прежде чем перенаправить ее обратно в общий репозиторий - - «локальная» история не обязательно видна где-либо на общем сервере, так как у вас есть возможность переписать ее (тогда как любая история, зафиксированная на центральном сервере, в любой ветви, навсегда, если администратор не стирает ее). Подробнее о Perfce новые возможности DVCS (опять же, это все еще в стадии разработки): http://www.perforce.com/perforce/r15.1/user/dvcs_getting_started.pdf

+0

Выглядит многообещающе. Спасибо за ответ – user2829702

0

Невозможно выполнить то, что вы хотите, не используя инструмент моста для подключения Git с Perforce.

Я нахожусь в той же ситуации, что и вы, в моей нынешней работе, и мы решили попробовать мост Git-Perforce. У Perforce есть мост до Git, который называется git-fusion, который доступен для 20 пользователей. Вероятно, это лучший инструмент для моста. Git сам предоставляет команду под названием git p4, которая дает вам более ограниченную функциональность.Ваш рабочий процесс с помощью git p4 будет выглядеть примерно так:

# do your work and make your git commits 
git p4 rebase 
git p4 submit 

Как вы уже догадались, git p4 rebase идет в хранилище и получает все изменения, сделанные другими пользователями в этой отрасли, прежде чем совершать свою работу на вершине. Rebasing необходим, потому что он имитирует Perforce, где все ваши фиксации всегда остаются нетронутыми.

Если вы решили пойти с помощью мостового инструмента, поймите, что это, скорее всего, приведет к большой перестройке ИТ-инфраструктуры, и вам, возможно, придется убедить вашу организацию в том, что она стоит того.