Почему мой восстановленный файл все еще отображается как отредактированный в Code Collaborator?
У меня есть файл на проверке в Code Collaborator (CC), который мы назовем "SomeFile.h". В первой ревизии я добавил несколько строк нового кода. Во второй ревизии все изменения были перемещены в другой файл, и Somefile.h был возвращен, поэтому SomeFile.h не должен показывать никаких изменений в последней ревизии.
Сводная страница обзора CC показывает это для SomeFile.h:
Я ожидал увидеть символ "Файл был возвращен" из приведенной ниже таблицы в руководстве по обзору сводного экрана CC, в котором, по-видимому, нет отображаемого символа:
Кроме того, если я нажимаю на файл и просматриваю разницу, мои старые изменения все равно отображаются, создавая впечатление, что файл не был восстановлен. Я пытался отправить список изменений как с неизменным SomeFile.h, так и без него, но это не имело никакого эффекта.
Почему файл, который не имеет изменений по сравнению с текущей зарегистрированной версией, по-прежнему отображается с изменениями первой ревизии и без символа "Восстановленный"?
Моя система управления версиями - Perforce, версия сервера - P4D/LINUX26X86_64/2016.2/1468155. Версия Code Collaborator - 9.2.9200.
2 ответа
Я не очень знаком с Code Collaborator, но я собираюсь предположить, что когда вы "отменили" изменения в Perforce (обратите внимание, что слово "revert" в Perforce относится к совершенно другой операции, поэтому использование слова таким образом это немного сбивает с толку) это было отражено в Perforce как обычное редактирование, поэтому оно не будет отображаться в CC как специальная операция "возврата". Я также собираюсь предположить, что когда вы видите старые изменения в diff, они находятся в предыдущей версии файла, так что ваши изменения действительно удаляются с текущей версии.
В Perforce есть встроенная операция "отменить", которая хранится в метаданных в отличие от редактирования, однако это новая функция (добавлена на сервере 2016.2), которая, насколько мне известно, не поддерживается другими клиентами, кроме чем командная строка. Само по себе CC, вероятно, не будет отображать собственную отмену Perforce в качестве возврата, если она не была обновлена недавно. (Если вы пользователь командной строки, это очень удобно - история файлов покажет, какие именно изменения были отменены, и вы можете настроить команду "интегрировать" так, чтобы она учитывала операцию отмены, так что вы можете сделать заново отменить объединить, а не рассматривать отмену как простое редактирование, которое добавляет новые изменения).
Документация CodeCollaborator (в частности, символы, которые вы показали на скриншоте) устарела.
Скриншот, который вы показали здесь:
Из возвращенного файла. Маленькая синяя стрелка, поднимающаяся снизу слева до верхнего левого, - это "перевернутый" символ в CodeCollaborator.
Причина, по которой этот файл все еще присутствует в вашем обзоре, заключается в том, что кто-то прокомментировал его. В частности, кто-то имеет "Принято" в разделе "Общие" этого файла (обозначено зеленым кружком с белой галочкой в нем).
Любой файл, содержащий комментарии, остается видимым в обзоре, даже после восстановления. Это, по-видимому, предотвращает потерю части обсуждения в обзоре из-за того, что файл, в котором состоялось обсуждение, был возвращен. (Это было бы обычным явлением, если рецензент поднял проблему, рекомендовав, например, переименовать файл.)
В зависимости от ваших пользовательских настроек возвращенные файлы, у которых нет комментариев, могут быть полностью скрыты. Так что это может быть поведение, которое вы привыкли видеть иначе.
Что касается того, почему он по-прежнему показывает различия, включающие ваши изменения, то это, кажется, дизайнерское решение со стороны CodeCollaborator. Файл был возвращен, как указано на главной странице обзора, поэтому его содержание больше не имеет значения в контексте последнего изменения.
Я согласен, что это потенциально сбивает с толку, поскольку легко пропустить синюю стрелку и думать, что изменения все еще присутствуют. Это означает, что любые комментарии к этому файлу, которые обычно делаются, когда он находится в "измененном" состоянии, останутся в контексте изменений, которые были изначально там. Для CodeCollaborator было бы неоправданно отображать "Этот файл был возвращен" или что-то подобное вместо diff, но это не совсем так, как он был спроектирован.