Bug #2849
closedId требования меняется при копировании
100%
Description
При копировании скопированное требование всегда меняет имя на 01.
То есть, например, если есть дерево требований:
q
w
После копирования q в w будет такое дерево:
q
w
--01
Хотя ожидается
q
w
--q
Если копируется не одно требование, а целое поддерево, то на 01 меняется имя только корневого требования.
Ожидается, что имя требования будет меняться только в том случае, если оно совпадает с именем уже имеющегося в том же месте требования.
Updated by Vladimir Fedotov over 12 years ago
На самом деле меняется не имя, а id.
В данном случае, id совпадал с именем, поэтому когда изменился id, изменилось и имя.
Легко сделать так чтобы id менялся только при совпадении с уже существующим, но это создает непоследовательность в поведении, которая смущает: при копировании одних узлов id меняется, при копировании других не меняется.
Updated by Viktoria Kopach over 12 years ago
Нужно по аналогии с файловой системой сделать. Если совпадает имя, менять следующим образом: добавлять к id "_copy".
Если еще раз совпадает "_copy2" и т.д.
Updated by Viktoria Kopach over 12 years ago
- Subject changed from Имя требования меняется при копировании to Id требования меняется при копировании
Поправила название тикета
Updated by Vladimir Fedotov over 12 years ago
Так тоже плохо. id узлов совпадают постоянно, учитывая, что это по умолчанию просто натуральные числа. Добавление copy вносит путаницу: copy чего? В наших проектах 100500 узлов с id "01", ничтожно малый процент из них - копии.
Это всего лишь следствие того, что схема именования узлов изначально кривая.
Updated by Alexey Khoroshilov over 12 years ago
- Target version set to 0.13
Vladimir Fedotov wrote:
Так тоже плохо. id узлов совпадают постоянно, учитывая, что это по умолчанию просто натуральные числа. Добавление copy вносит путаницу: copy чего? В наших проектах 100500 узлов с id "01", ничтожно малый процент из них - копии.
Не согласен. Именно поэтому я не закрыл тикет #2780 (см. комментарий).
Это всего лишь следствие того, что схема именования узлов изначально кривая.
Это следствие неудачной схемы именования, выбранной по умолчанию. И это другая проблема.
А копирование должно сохранять идентификатор, если нет необходимости в обратном.
Обсуждение улучшения схемы именования по умолчанию предлагаю перенести в другой тикет.
В пяти других проектах схема именования по умолчанию в буквальном виде не используется, поэтому текущий вариант копирования там смотрится неприемлемо.
Для затравки в новый тикет:
Текущая схема именования разрабатывалась исходя из предположения, что требования получают осмысленные имена на верхних уровнях иерархии, а требования с числовыми идентификаторами локализуются внутри относительно небольшой группы подтребовний нижнего уровня (обычно глубины 1-2, в редких случаях 3, и совсем редко 4 и больше). В каждом проекте именование верхнего уровня вырабатывается индивидуально, поэтому, по сути, автоматизировалась только работа с требованиями нижнего уровня. Какие есть идеи по улучшению этого подхода?
Из предыдущих обсуждений, вспыла и другая проблема. Если работать с SVN, то не удается скрыть от пользователя идентификацию требований в файловой системе, поэтому возможно необходимо пересмотреть механизм разделения идентификатора и имени.
Updated by Vladimir Fedotov over 12 years ago
Я прочитал два раза, но не понял как предлагается переименовывать идентификаторы при копировании.
Updated by Alexey Khoroshilov over 12 years ago
Vladimir Fedotov wrote:
Я прочитал два раза, но не понял как предлагается переименовывать идентификаторы при копировании.
При копировании в место, где не возникает конфликта идентификаторов, идентификатор копируемого требования остается неизменным. Использовать автоматическую генерацию нового идентификатора логично только при наличии конфликта. Кроме того, вместо нового идентификатора получающегося по умолчанию предлагаю генерировать новый идентификатор на основе старого путем добавления к старому идентификатору некоторого суффикса. Например, переименовывать в <old-id>_copy. Если и c таким идентификатором возникает конфликт, то попробовать <old-id>_copy2 и т.д.
Updated by Vladimir Fedotov over 12 years ago
- Status changed from New to Resolved
- % Done changed from 0 to 100
Applied in changeset r2814.
Updated by Yuriy Shekochihin over 12 years ago
- Published in build set to 0.13.153
Updated by Viktoria Kopach over 12 years ago
- Status changed from Resolved to Verified
- Assignee set to Alexey Khoroshilov
Updated by Alexey Khoroshilov over 12 years ago
- Status changed from Verified to Closed