Могу ли я безопасно редактировать переименованный файл в перформансе - PullRequest
6 голосов
/ 22 сентября 2008

У меня есть файл, который мне нужно переместить, он уже загружен. После перемещения он нуждается в некотором редактировании - обновлении пакета и т. Д. - в соответствии с его новым местоположением. Должен ли я отправить изменения изменений, а затем снова открыть его для редактирования, или я могу сделать это за один раз? Если да, какова соответствующая последовательность событий?

Ответы [ 5 ]

7 голосов
/ 22 сентября 2008

Я делал это раньше, но в зависимости от вашего процесса сборки, я рекомендую против этого. Что я обычно делаю, это:

  1. Переместить файл.
  2. Если для компиляции необходимо изменить ход, откройте его для редактирования и внесите эти изменения.
  3. Отправьте изменения, сообщив о выполнении, чтобы снова открыть файлы для редактирования.
  4. Внесите изменения в путь и т. Д., Которые не вызывают ошибок компиляции, но должны быть обновлены.
  5. Отправьте эти изменения с соответствующим описанием.

Однако, если вы хотите, вы можете просто внести все изменения в шаге (2) выше. Perforce может изменить флаг для нового файла с интегрировать на добавить, но он все равно запоминает исходный путь для файла.

Редактировать: лучший метод

Я понял, что часто использую другой метод, но идея «перемещения» файла отвлекла меня. Итак, я бы порекомендовал эти шаги вместо:

  1. Интегрировать файл в новый путь / имя, оставив предыдущий файл там. Я предполагаю, что это не нарушит ваш процесс сборки.
  2. Отправьте новый файл, проверяя его снова для редактирования после отправки.
  3. Внесите необходимые изменения в новый файл и в проект, чтобы использовать новый файл.
  4. Отправьте изменения для нового файла.
  5. [Необязательно] Вам может потребоваться проверить спецификации веток, чтобы увидеть, нужно ли вам сопоставлять старый файл с новым в любых ветвях.
  6. Создайте список изменений для удаления старого файла и отправьте его позже.

Этот метод позволяет четко отделить правки от переименования / перемещения, не оставляя проект в состоянии, которое не будет компилироваться.

Кроме того, зачем ждать шага 6? Иногда, особенно в больших проектах, вы можете захотеть переместить файл, который редактирует другой человек. Perforce услужливо скажет вам это. Дождавшись удаления файла, вы позволяете коллегам завершить редактирование и отправлять документы без необходимости переносить свою работу вручную. После отправки изменений они могут быть интегрированы в новый файл, а затем старый файл может быть безопасно удален.

2 голосов
/ 22 сентября 2008

Отправьте изменение хода и затем снова откройте для редактирования (вы также можете использовать опцию reopen). Это гораздо более читабельно для пользователя в истории изменений.

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

1 голос
/ 24 октября 2008

Я бы сказал, всегда сначала отправлять, а затем редактировать. Это намного чище и делает более очевидным, что происходит в вашем хранилище. Затем просто извлеките файл в новом месте и внесите любые изменения. Это также делает намного более очевидным, что изменения были внесены в новое местоположение и чтобы все это работало после переименования.

0 голосов
/ 22 сентября 2008

Да, вы можете. Просто откройте для редактирования разветвленного файла (то есть нового). В P4Win для этого есть контекстное меню («заново открыть для редактирования»).

0 голосов
/ 22 сентября 2008

«Безопасно», наверное, важный момент здесь. Как только вы переименуете или переместите файл, он получит номер ревизии «1», который выглядит как новый файл для вашего клиента Perforce. Конечно, администраторы смогут получить свою предыдущую историю, но если вам важна история редактирования / версии файла, получить более старую ревизию немного сложнее.

Обновление: спасибо коммодору Джегеру и Грегу Уитфилду за содержательные комментарии.

Было непросто отследить, что такое One True Answer, даже из поддержки Perforce, поэтому я решил, что буду сообщать всем о том, что мы нашли:

  • Perforce сохраняет все версии каждого документа в своей базе данных.
  • Если он сохраняет ваш файл типа "" или "", то он сохраняет различия одной версии файла в другой, а не весь файл.
  • Если вы извлечете файл, не внесете в него никаких изменений, а затем повторно отправите его, он сохранится как новая версия с 0 различий. Это настраивается, и P4 может быть настроен на игнорирование элементов списка изменений без каких-либо фактических различий. Вы можете активировать это поведение, выбрав «Вернуть неизмененные файлы ...» перед отправкой списка изменений.
  • Используйте «Rename / Move ...» для перемещения файлов в P4, чтобы он мог их отслеживать. Не копируйте их с помощью проводника Windows, а затем повторно добавьте их в P4.
  • Если вы используете функцию «Переименовать / Переместить ...» из контекстного меню, «новый» файл покажет номер ревизии «1», как если бы это был новый файл.
  • Однако, поскольку P4 сохраняет все функции, выполняемые над файлом, вы можете перейти к любой предыдущей ревизии (и даже восстановить «удаленные» файлы) с помощью команды CLI «p4 filelog -i»
  • Если вы хотите попасть в историю ревизий перемещенного или переименованного файла и не являетесь администратором, вы можете щелкнуть правой кнопкой мыши и выбрать «График ревизий», который показывает каждую версию файла даже при перемещении между ветвями. .

Согласно поддержке Perforce, более легкое отслеживание истории изменений посредством перемещений веток или папок является часто запрашиваемой функцией и входит в их текущую дорожную карту.

Ответ Perforce: В настоящее время нет способа перемещать / переименовывать / интегрировать файлы и сохранять точную историю файлов.

Однако, если вы выбрали «Интегрировать ...», щелкнув правой кнопкой мыши папку, к которой вы хотите предоставить общий доступ, версии файлов вновь разветвленной папки и базовых файлов начнутся с ревизии № 1, но история интеграции между разветвленной папкой и базовыми файлами и исходной папкой и базовыми файлами останется, и вы сможете отслеживать историю изменений файлов.

...