Skip to main content

Имя релизного тега

Помните ту картинку из первой главы с командой pvm update ?

eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nNWZW3PaOFx1MDAxNMff8ylcdTAwMTj6uK2r+6Uz+5CEJM2llCZcXNrudnZcdTAwMWNbgIuxXHUwMDFk24RLp999ZYdiXHUwMDAzdsqSkGH9wGBcdTAwMWTLOpJ+568j+cdBpVKNp4GqvqtU1cQyXcdcdTAwMGXNcfV1Un6vwsjxPW1C6X3kj0IrfbJcdTAwMWbHQfTu7dushmH5w4daylVD5cWRfu4vfV+p/Eh/c+2YYeg/NJFcdTAwMTZnzVAoVkvrvpc2XHRcdTAwMTHDlEKEwOJcdCeq6bZiZWtz13QjlVmSoiqv9U993Pp+XHI/jFx1MDAxYupmXHUwMDEy1rBqZ812XHUwMDFk172Jp27qUuTrbmS2KFx1MDAwZf2B6jh23NdWslJeViv0R72+p6Kk65mbfmBaTjxN+lx1MDAwMLJS0+ul78hKJslcdTAwMDBcYmxgLiRgiC5cZmlVKlxyXHUwMDA2KGGC01x1MDAxNW+OfddcdTAwMGZcdTAwMTNvXkHBiHmb+XNrWoOedsqzXHUwMDE3z8Sh6UWBXHUwMDE56lx0yp5cdTAwMWL/6idnhlx1MDAwMMtt9JXT68eJo1x1MDAwNlx1MDAxNkjAnF+RSodeIFwiqeSEL1xmSZvBuZ1cdTAwMTLwbXXs+mZcdTAwMTjMx6ia+pbzN7k9ecCnoLpcdTAwMTnGR45nO15PW7yR6y5syrNLLIHv5FFMruxfJVx1MDAxYv30ZvH/2+vCp1x1MDAwYsYnud4shiZ7wcHKi6quXHUwMDE5xcf+cOjEXHUwMDFh2Ebi1aqraVx1MDAwN1x1MDAwZpPQ6CvTLuhi3jaPodT683VxmCnXdYJIXHUwMDE1XHUwMDA1XHUwMDFhXHUwMDExpCzQXGKkmkCIyMZxdnVcdTAwMTfXXHUwMDAzc3Z3eXbiwvrH00P/bHi+TZyhLeJcZm5cdTAwMTVnjFx1MDAwMYNcdTAwMDNcdTAwMGUwXFyNMyxcZsKkjiRcdTAwMDFcdTAwMTPJYU+Ktlfdbnc9zDA1OMXLMb5cYjPMXGZMXHSVWup0SCEmVsNcckrMKVx1MDAwN1x1MDAxNMP/XHUwMDFlb1Fy83i8bUuUpLSMKFxmdWeS/mxM1LVcdTAwMGZcdTAwMTT/XHUwMDAyZ7OLL+2rN008Zu9r4X5cdTAwMTMlXHUwMDE5NiSGjKxLN5aGkExcIqiJSZDCpUhRS1x1MDAxMmC/PFJa0SClWsR3gdRCXHUwMDE0q8NcdJfRffuic9dqnrXIhTO5OybVX1L5KHmxmsRF2EHASjNcdTAwMDZIXHUwMDEx1f2SbGPuXGL/XHUwMDE41jp1Me1cdTAwMWSdf+/Xp/6lXHUwMDE40JfibruMQc+qUVx1MDAwNFx1MDAxZEBcdTAwMDZcdTAwMDV8eb1+Ltpyi8dcdTAwMDKyXFxeNqdKYkIkXHUwMDA2gO5cdTAwMDKqrHrX9+JcdTAwMWJnls44Wyo9NYeOO12K6Fx1MDAxNKMk8dBcdTAwMTiYkXpzj/Ldj5TreOmLyFKNQ9fpJbBVXdVdpjB2dP67MMd+sPWKXGZcdTAwMDEsJ5lDpHM/iNHGJFx1MDAwYlx1MDAwZtU+tq3RqbxcdTAwMWNcdTAwMWPX6furi66A+62gXGYwg0BcdTAwMDYgLVJQrlx1MDAxOef7q6A6zqSOt5zW/G9cdTAwMTRU4lLuXHUwMDA0XHUwMDAzXGJrddk8XHUwMDE3bP8zjHudXHUwMDEzcthvfek3ep9uaDtsbMNcdTAwMWR8Me4oZVx1MDAwNpN0PVx1MDAxNVx1MDAwNFDzqKf0sS3XXHUwMDA2vD265SraaVx1MDAxNUgpk1rJ8U7gei4lhS+qpKU057ahKzRr+dBcdIHGeWOYx03SOFx1MDAxZo3HtVvvZty/b3dk7Hzab5hcdTAwMTnVOsY5Jpgv0yyhgVbOXHUwMDE1nvv4QKB1lslcdTAwMWHLkEm9W6ZcIiei+0PzyJvzbP/tWX09xCoqxFx1MDAxYb8w1qWpXHUwMDAxYZBpccCb57ghb8ZBa9D9fnXUOImG18Rcbm17z6EmcIllrcw7g1x1MDAxOIJ1iNdcdTAwMDVcdTAwMTlivaNjguwlxH+8qFx1MDAxMofKilx1MDAxZqatgFtcXJ7UUlx1MDAwNFx1MDAwMFx1MDAwNPmDqN+R+5VcdTAwMWZKOsP8s/hMvLtByzr3QbTf5HImjKKMVnBcdTAwMDNjKZZUepVkneoqaT2BZIxcZi6RLD7OJTrpWdk3ztmmXHUwMDAyYFx1MDAxZEQ56F/sfKk8Ry1d1TGgXCJZ2PDGXHUwMDE4Qfv6ZNA8u/x0LVx1MDAwN51cdTAwMGaz+uRDw5ruOUZcXG+Ailx1MDAxNnVmXGIqd1xuXHUwMDExkFx1MDAwNXq4xlxmQlx1MDAxNGB9oZ0wUySHOTx/I4fB/bAyXG5sM1bFuiiWaiyEz9JcdTAwMGWo8Fx1MDAxMWVcdTAwMWM6tq3naiugafmCLlx1MDAwMOBUis0/c11Nzf5cdFx1MDAwNbTZcabEaca9q1x1MDAxMTvdc56JMHTcLqObXHUwMDAyLVxyTdxuVXFcdTAwMTOeoSRcXEfbbrbzT+S5ZHkvwXhXXHUwMDE5aS6xXzt3hYwwxIHYXHUwMDE44duv4ehcdTAwMTRetlx1MDAxYu33VlibOZ9bNcL2XHUwMDFiYYmgsX5iXHUwMDAwXGa6vNg/O75cdTAwMDV7rFx1MDAwMnw5XHUwMDAxgFx1MDAxMsR2s4Y/jd8/d8Pvwfxra9VcZoKbOFH7d3Oaq/eOXHUwMDFhXHUwMDFmXHUwMDE1XHUwMDFmXHUwMDA0ZmeBeoRcdTAwMWN73pnky+tB8s6f/1x1MDAwMmlvVPIifQ==release-v2release-v1unreleasedchanges+pvm update+=

В ней фигурируют зеленые кружочки с надписями release-v1 и release-v2, это схематично изображены релизные теги, которые фиксируют поднятие версий пакетов и факт релиза.

Виды релизных тегов

По факту, в зависимости от выбранных настроек pvm будет по разному именовать релизный тег:

НастройкиВид тегов или тега
Простой репозиторий с одним пакетомvX.Y.Z
Задана настройка tagging.release_tag_package и/или versioning.unifiedvX.Y.Z
В остальных случаяхrelease-YYYY.MM.DD-{suffix}

Тег вида vX.Y.Z

Такой тег естественным образом получается если у нас простой репозиторий с одним пакетом. В случае монорепозитория добиться такого тега можно двумя путями:

  1. Через явное указание у какого пакета брать версию для релизного тега с семантичной версией:
[tagging]
release_tag_package = 'package-name'

Такой пакет обязан существовать.

  1. Либо можно объеденить часть или все пакеты одной версией, которая и будет использоваться для формирования имени релизного тега:
[versioning]
unified = true # все пакеты имеют одну версию
# unified = ['/core/*'] # данная часть пакетов имеют одну версию, которая будет в имени релизных тегов

Настройка сводного релизного тега

Кейс с тегом release-YYYY.MM.DD-{suffix} при этом можно настраивать через конфиг pvm:

[tagging.generic_tag]
prefix = 'release'
# date follows after prefix, delimited by '-' symbol
date_format = 'yyyy.MM.dd'
# suffix after date, could be name of package which exports list of strings
# or it could be explicit list of strings
suffixes = '@pvm/suffixes'

Опция tagging.generic_tag.suffixes отвечает за выбор суффиксов релизов, т.к. их может быть несколько за день, почему нет. При этом можно задавать свой список строк:

[tagging.generic_tag]
suffixes = [
'Metis',
'Adrastea',
'Amalthea',
'Thebe',
'Io',
'Europa',
'Ganymede',
'Callisto',
'Themisto',
'Leda',
'Himalia',
'Ersa',
'Pandia',
'Elara',
'Lysithea',
'Dia',
'Carpo',
'Valetudo',
]

Или пакет, который экспортит такой список:

[tagging.generic_tag]
suffixes = '@pvm/suffixes'

Порядок выбора суффикса при этом такой:

  1. Сначала переданный список слов трансформируется чтобы быть совместимым с ограничениями которые есть в именовании тегов, например проблемы и всякие спецсимволы заменяются дефисом, некоторые комбинации символов вообще полностью вырезаются из строки. Также удаляются все дубликаты.
  2. Затем выполняется фиксированный shuffle списка, т.е. сортировка не случайная, а задается через seed, seed берется из имени рутового пакета.
  3. Теперь представим что получившийся список не имеет конца, и закольцован. Но при этом у нас есть индексы от 0 до последнего елемента в кольце.
    eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nOVcXFtT2zpcdTAwMTd9769gcl5cdTAwMWJcdTAwMWRp637eIOWSQriHXHUwMDE0vukwJnZcdTAwMTJcdTAwMTcnXHUwMDBlsUNcYp3+9yObXHUwMDEwJ45dXHUwMDAyX926p56hYMm25O21ttaWtvr13cZGJZxcdTAwMGWdyj9cdTAwMWJcdTAwMTXnoW15rj2yJpX3Ufm9M1xuXFx/YKogPlx1MDAwZvzxqFx1MDAxZF/ZXHUwMDBiw2Hwz99/J3egtt9/usvxnL4zXGJcdTAwMDNz3f/M+cbG1/jfxXY8z1x1MDAxZFx1MDAwNk58eVxckTREQaVLXHUwMDBm/UHcqFx1MDAxMlxcXHUwMDEy4Dy5wFxyPpjGQsc2tVx1MDAxZMtcdTAwMGKcpCYqqux79S+bteZph/Mqtqk8+LJtf0ha7bied1x1MDAxNk69uE+Bb94jqVx1MDAwYsKRf+u0XFw77D2//kJ53l0jf9ztXHKcIHp3PC/1h1bbXHKnpozgpNRcdTAwMWF042ckJVx1MDAwZuaMKSS0XHUwMDA2oiSfl0d3VjlliFKtXHUwMDE4Xah56k3N9/xR1Ju/iFx1MDAxMsy6SfpzY7Vvu6ZTXHUwMDAze35NOLJcdTAwMDbB0Fx1MDAxYZkvlFxcN5m9J1x1MDAxMaZcdTAwMTEhl1rvOW63XHUwMDE35lRcdTAwMDZObHyiOKaSXHUwMDAyZfOaqNlh3Y5R8Dltvp41XHUwMDFhzsxUXHSik4UuR73dfoLQ7PZZlanc33FuqType9NcdTAwMGbnqltcdTAwMWJcdTAwMGZbNjuszOo/x7+/vX815lx1MDAxNCF5mCOCUsGpgLUxd1u/qO9cdTAwMGZt/+Lg+jLsXHUwMDBmXHUwMDFj+XCor8uNOalcdTAwMTDVlIPAWDCOsUwhXHUwMDBmXHUwMDAz0oxgorlcdTAwMDGfXHUwMDA0Wlx1MDAxY/wwRVIoLlx1MDAxOFx1MDAwMc2FaTFcdTAwMDOFmCCmJCWza1x1MDAwMNJgXHUwMDA0TZjAmuBcIrD4fZB57iBcdTAwMWJhXCJcdTAwMTdgilx1MDAxOU5cdTAwMDNovDbCRLjVOONcdTAwMGb19kVz71x1MDAwNH9wnZOTw2m5XHUwMDExRkBcIlx1MDAxOX1cdTAwMTS66tY4wphqLKA4t4ZcdTAwMTHnWCpcdTAwMDJcdTAwMTlejVx1MDAwMuKSQZZX48atXHSKoVx1MDAxMFx1MDAxYy3cbo3CLXdgu4OuqVx1MDAxOYw9b17nXGbsnJqh7y5cdTAwMGWx0ZH8tZGYPz6Z//35ffbVK/aJjlx1MDAwNcskXHUwMDBmeJd6UMWzgrDm9/tuaFx1MDAxMHtcdTAwMWP1Kt3V+Fx1MDAwNTdHI3/Scyw741x1MDAxNdN1b6LYgotOU8xcZlpYXHUwMDBiyden2JZvtXjz1revts/HZ57DSIT0klNMIWWG6CVcIsVcdTAwMTRjXHUwMDE4I8HN2FxcpHLASFG+RO+EYVx1MDAxOKVcdTAwMTXNs2zQgilsht9CZEPJKJayT3QklvlcclxiJnEuwVxiXHUwMDA2orV6hTJcdTAwMDd6fKU+Wcf3w6tcdTAwMWRFmrwrrdp9yVx0ZuSvUrA0ijzxS2OjWniRXHUwMDAzXHUwMDE40UhkXHJewFCa8s/UYkaOK1x1MDAwZfq/T61l40RHNbHLb0AszvOIRZXxkIKS9Xl1VzeB2Gn15urBXHUwMDE5tDoj/9FcdTAwMTmWnleKXCLOQIuVkJdxgaQqVlx1MDAxYYJGOFdcdTAwMWJcdTAwMTJcdTAwMDRcdTAwMDApZs/oXHUwMDA1USiu9Vx1MDAxZiBcdTAwMGUzLFx1MDAxNFx1MDAxZNXEOL9cdTAwMDHHpM7jmHHoUkq+XHUwMDEwob3EMXrk3LdazUP78v5o32s+wqV7dlhyjlx0jXSGMlx1MDAwNIJwwcJcdTAwMTDAhOssU1x1MDAxOJoqKTSnZJVfXHUwMDEwdYtcdTAwMTllWExcdTAwMTBfKn6lXHI0K3w2zW/ALp5cdTAwMWJ7XHSFmST4XHUwMDE17Nrc89vbRlx1MDAxNDvBZb17LjRcdTAwMTFnZzflZpdmiCvAdFVcdTAwMTlcdTAwMTKGip2v1auRXUIvM65KnMkuXHUwMDEzLEqGOYj/PLuqXHUwMDE5JoqOxDi/XHUwMDAxvyTL45fpv6RaXHUwMDEwtj7B6uP6uDbs1m+bm3c3XHUwMDBm91x1MDAxYU/ueqLcXHUwMDA0U3h1jnCmXHUwMDEwXHQqUlx1MDAxZJpcdTAwMDBcdTAwMWRcYs6e1sBpVlx1MDAxMY6j1Vx1MDAxMf5cdTAwMDfMZlRXXHKTuq+0XFxi+VxcYlx1MDAwNmKAXHRbf7Fn63HPvZheNEjr4MPjpXOk72v1arm5ZFx1MDAwNitcIrOCLaVcdTAwMTBOj2JcdTAwMDWIQVxuqcn2ZLwyYpSJrGlCoIQwpeVcdTAwMWZArFxmXHUwMDBiPZU/XHUwMDFip0RcdTAwMTRcdTAwMGKdhzCLYrkr+JKbiFkx8VxuNdi83Fx1MDAxZZy1Pvn+aeO2jm9328efSlx1MDAxZWtpsTJmPK10mU9IcWqq4UdcdTAwMTMsa8FUpfkkJFx1MDAwMy35QkUhdOr4g/DMfXxaRl8q3bH6rjdd+ioxlkxcdTAwMDPW4rtcdTAwMDdO7MUj17x04abndlx1MDAwN7GTdzrLXGJcZt225c2rQ39YeVx1MDAxM4JcdTAwMTnNg7DRzEIzWFx1MDAxZsG97t55bf9oM3zcY7q3ZXdcdTAwMDZHVyXPQSFMopVYxmhoxFx1MDAwNCs2/2Qt+JouYNCcXHUwMDE3PDXwJvjelFx1MDAwMr652Vx1MDAwNsI4n0jhrFx1MDAwZl+v70wmp/vV1kEv1Fx1MDAwN5YvNztcdTAwMWbHJYevYsvQZTrd+I9DrFpcdTAwMDexXHUwMDA0c2XGvUVlWVx1MDAxZci2S1x1MDAwMVmav7rIXHUwMDA1lcDFK1ZBpFx1MDAxYe81/DtXXe52d1x1MDAxZZvN9kFPllx1MDAxZbQqrX6fsEt1Ydhdy9tcdTAwMTJjeKI5lWVUXHUwMDBidimwm5/cxblcdTAwMDTN+ELg8lx1MDAxMnRcdTAwMWZEMG3fXHUwMDFkXHUwMDBm8O2Ny70z2HH6XHUwMDBmJU9cdTAwMWYkXHUwMDBiI/FzwskvVlxiSmtcdTAwMTNFiYKnN99cdTAwMDRZp1x1MDAxNJBl+e5cdTAwMTZAgSaviNE+1vjJUWPSO71ccuDRdWndtyZQcshiQGJFzc6zpVxiXHUwMDE0vOrM1kExSFx1MDAwMGCllLmdV4G4bdp1Rt+Bcd+1bfOV3oRkyM3dZpprXHUwMDFhqa61kdyXXHUwMDBmZI9e73gw3Vx1MDAxZFx1MDAwZU9cdTAwMDdcdTAwMWZvrMag3EhcdTAwMTZcZkFmYi2jXHUwMDAyqYK3XHUwMDBirCcgXHUwMDE0XHUwMDE3glJSzN6A/1x1MDAxM8jdUnhjmothYMTIL/yKKWlh1XljZ8pcdTAwMWbvP+1Qp1dXWEw6JccwR1wi7XFnc9Ks+OTw9UBsYkggupRcdTAwMTjulVx1MDAwMsMqV1FcdTAwMDDGWiogr5g02+UngVxu7q+H15feJrs+UVxyRzXKXHJiRdDqni1cdTAwMGUoNVx1MDAxNZxGL29rhu23o3dh69LCwn9cdTAwMWG+VGKJzSjxS7dnZaFcdTAwMWPwuijH2ShXxaDcitZBMuWGzt8rRqkmRm8s5Cy9uEEx02ClxjnBXHUwMDEyYZmR7MKZQKBwXHUwMDE08jJcdTAwMWVNk1x1MDAxN4Z5LVx1MDAxMU2nPS/uNpAyldI2I1x1MDAwMYuCQv5cdTAwMTZcdTAwMTLEnXvbKuLXhFx1MDAxZc7zXHUwMDFkL7u4mFx1MDAwZu1x9OgqRjjaXsnNXHUwMDEwJLWIfsHCZV1rXHUwMDE4e3tEltLFvs37s7Rymdeb7++UXehNlPXJhWKcKWE8iqRytS9cdTAwMWEpJURcdTAwMDRcdTAwMDVcdTAwMDNcdTAwMDRcIiVb6dNcdTAwMGZdM6VgXGakV1Loqlx1MDAxMjGhXHUwMDE5XHUwMDAzyVx1MDAxOZNRNuFLXHUwMDBmMjqEZKRcbplcdTAwMGYgaZTbMX9cdTAwMTB56UlcdTAwMTlcYo1cdTAwMGWgiFx1MDAxYTmjmYxcdTAwMTlifpJcdTAwMDeteMlcdTAwMWa8mjtzaW9cdTAwMWHbeW7OhIhcItRow+XaLk+2Rv2t45qenjegufnRvm6cdGW5XVx1MDAxZVx1MDAxMLW69XpcdTAwMTZkmfAr7W1+yVxiT6jiyvz8xGna9cdu+lPH7lxchZq7qGs+I5Oa6/VXXHUwMDE4gp2704PTg9pcdTAwMTfa7I2P2tuWsCdH5UYx5YhqxjOyVLVGRGDy3Vx1MDAxZEw/XHUwMDA3xUxcdTAwMTCQhP7EdbL1QSxLXHUwMDAxYp67kUFzzGFpL+WLqVx09iZcdTAwMGV3+y1aP1x1MDAxZu9e1UB4TcsqN4iB0NXZ2dn/UmB0aVx0Qi1lNFx1MDAxMVx1MDAwN6Bl9MNQXGaE381kS8VcdTAwMWFcdTAwMGXPQit05kKzcu86k61VO//ViY/Z042FXFx79jKzpLNv7779XHUwMDBiXHUwMDE5tHawIn0=abcdefgh0372
  4. Затем берем суффикс из последнего релиза, если таковый был, и вращаем индексы так, чтобы следующий за найденным суффикс стал самым первым. Допустим мы нашли что предыдущий суффикс был, условно, d. Значит теперь начало кольца переедет к следующему слову e.
    eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO2c61PaSlx1MDAxZsff969wPG/rnr1fzjukXqjiXHUwMDFkqZ7pOJFESFxyXHSSXHUwMDAwYsf//WxcIlx1MDAxMkg2NOXwPINzyExb2c3GZfP5/i576c9PW1vb0bjnbP+1te08tyzPtfvWaPtzXFw+dPqhXHUwMDFi+Lpcbiefw2DQbyV3dqKoXHUwMDE3/vXnn2lcdTAwMGLQXG66b61cdTAwMWPP6Tp+XHUwMDE06vv+1p+3tn4mf+tcdTAwMWHXjttcdTAwMWV5tVx1MDAxZpVq4+KBsVx1MDAxZGhcdTAwMTNx/GPP/pI0TW6adsbz3F7opFx1MDAxNc+6lErAlcJIXG42LVx1MDAxZuvyXHUwMDFkRiggRElKZmpGrlx1MDAxZHV0LeK6kou5Vlx1MDAxZMdtd6KCSstve3En4LQkjPrBo1NccrygXHUwMDFmd+5cdTAwMGYkObXu087dW63Hdj9cdTAwMTj49vSeqG/5Yc/q67FI73twPe8yXHUwMDFhJ0/X46nHbjvzO5qTTuNMeVEr/UvbXHUwMDFk31x0w7n+XHUwMDA2PavlRvHQIJiWxj3s1ezk1XzPPr9j9XuT52yH8YeZnjlO/OqQZJBcYoJcdJ3WpIhcdTAwMTBcdTAwMDKzpSeBn+CCOWeUIJY2c8MvXHUwMDFhkyh56oPlhU46kPFcdTAwMTjuvSE06emkSldcdTAwMWXtO49EnNe88Zcr2a5cdTAwMGV6TZuebE/qvyf/vn42MfdYu65cdTAwMWT17OD6+O4m6vqOeD5RdyWZXHUwMDEzXHUwMDEyXHUwMDEwRVx1MDAxOOZcdTAwMTByyiBcdTAwMTRcdTAwMTnyIFx1MDAwNopcIoiU/o5CYJLHXHUwMDBmXHUwMDEyILhknFwirFx1MDAxONd3XHUwMDFhKIRcYlApXGKa3IPxXHUwMDA2xsUwYoUoh1xu5ajTdVx1MDAxMqFcIlx1MDAxNlx1MDAxMSeEM8LxUiz6XHUwMDAzz1uAXHUwMDE5j3brl+y51rpuXHUwMDFjnsMvrnN+fjLOY+a5foYxhFx1MDAwNVx1MDAxMPHXIXnDxlx1MDAwMIREQY7zhlxyXHUwMDAyxqCQXGJcdTAwMWLsXHUwMDFhwYBcdIo3du3XKDFt2DiB2ERcdTAwMTIvXHUwMDA0SVLtbjBWcGmSptW9wJ11mPGV/rSVfv3kw/Tn75/Nd+egiK9cdTAwMTlcdTAwMWPSXHUwMDA3fMo8aNuzwqhcdTAwMWF0u26kv8VZ3KtsV8PI6ke7rm+7fjtb5/h2QU3SqtLvXHUwMDA3o45j2YZ22bpcdTAwMDVcIttccqwmazxcdTAwMDb27d7V4NJzKIqBKCUyXHSkdvdzUkpERiFcdTAwMDScab9milx1MDAxZSCQhM1cdDPVXHUwMDE4XHUwMDA02WhkIzFz6KA4lVDbZVPowHPKm4pMR2ZQccHWT2RcdTAwMTko4ivF4YNLXGaTs1v5zTpcdTAwMWL2bvclarC2sKrDUlx1MDAxMtPBtJR4ziO9KUxBXHUwMDFkXHUwMDAzMZNcdTAwMTNDXG5wk1x1MDAwM8NcdTAwMTRkxbpcdTAwMTGXWVxcVFx1MDAwN+WSYWVcdTAwMTKXKFxmy1x1MDAxMYJcdTAwMTgpJZlcXDNxzVx1MDAxM1x1MDAxMV87KVxmXHUwMDFmXFxaTzWdQ13s3N8+O37zoVx1MDAxZrw4vZLSklx1MDAwNDCKXHUwMDE1z+W+lHEgpDlCxFxuwMJcdTAwMTBcdTAwMTFcdTAwMDGM8bwoN1xuMytcZsdzXHUwMDBiSlx1MDAxOWNExopcdTAwMTRGpPZ7nKB1XHUwMDEzmIGK+NpJgfjgKiOnzrDZbJzYN8PTI6/xgm/cy5NyXHUwMDBlTFx1MDAwMWVcYlx1MDAxMDFcdTAwMDKwID7EOrtXXHUwMDE5XaZOXGZrt6dcdTAwMThBXHUwMDFijf0yoY9cdTAwMDeY6lx1MDAxMNGU0YtCjVx0XHUwMDAxKVx1MDAxNYysncbyWCTFKVx1MDAxMFx1MDAxZlxcY5XDoLWnw10nvKm1r7hC/PLyvozGXHUwMDE0XHUwMDA1TGJI8kFcIqLAPIGr8ulZKjHtXHUwMDE3XHUwMDA13CishMJ0XHUwMDA2LChkODepXHUwMDExe7HCJIxLSFx1MDAwNYIzUyHrobBcdTAwMWRcdTAwMDNcdTAwMTbxlVx1MDAwMvHBXHUwMDE1Vlx1MDAxYtRcdTAwMDbVXrv22Kg83T9cdTAwMGZcdTAwMTVcdTAwMWM9dXhcdTAwMTmFSZifM5yEilximMJEnbliXHUwMDA0zZNcdTAwMWNwI6tfXHUwMDA0h1xmxutHzDi3IXKF0/RcdTAwMGIzQVx1MDAxNEd07XSVpyHT7kOqaffl0L1cdTAwMWVf11Hz+MvLjXOqhtXaTkl/hYQp75JcdTAwMTLArCObRoVcdTAwMThcdTAwMTCcmX5PXZaOJinfTFx1MDAxYpbJu1x1MDAxMKJS5VWkK2mxtKg2flx1MDAxOFwiuvwqz/9IWlx1MDAwNizeyt+J+OBcIqs0bvb8y+a3ILioP9bg40Hr7Jsh8Yqc5ygjMp7zQG/rX3pkXGLMzGC8i8y0kCo3mlqsKS4oVoLNXGbUzHJXYZbFlIKS8lx1MDAxNfiq5N3r3lkz41x1MDAxOfjRpfvytj47V7pvdV1vPDeQcfuK57b9xFo7XHUwMDBmM+9FdzpyW5Y3rY6C3uzbXHKdxLrHXHUwMDA2Ylx1MDAwMcOd9uFV9ei0XHUwMDEyvVx1MDAxY1LV2bVcdTAwMWb801vDXHUwMDA2lTzDiFxukEtqdIBcbiin5p0pXHUwMDFigJdcdTAwMDBYXHUwMDBmJcSKMdM8XHUwMDAxJUVcdTAwMDTrrIcrildcYvD9ulx1MDAwMux1ndHo4minedyJ1LFcdTAwMTWIysPXQSmAJZ2HlyqcY1ZumF1cIpCBTGr7OVx1MDAxYpHMrH9cdTAwMTYxy7XXi8OYXHUwMDE1QttaV2iFXHUwMDFjXHUwMDFj1oMnV95cdTAwMWO0919cdTAwMWGN1nFHlIRWZqPpN3aJyrG7sbfLsMuRRIpcdTAwMTFhilx1MDAxOIp3/SHGicCMr2L1451ee13pfebhuPV05sPHe5d5l3jf6T5cdTAwMWI2XHUwMDE4XHUwMDFh6J1xY+97UTbYrlx1MDAwMlspldK5XHUwMDE2N012XHUwMDE27+piTGBFmVhur6pcdTAwMTFaZ12h/Vpl56f1UefiMcQvrktqgTXCpaCFXHUwMDE48FxcUDvdSoVwwWo03XD8+1x1MDAxY2OBMabmaLfY+GIssUKrzNdcdTAwMWVWgXFL/1x1MDAwZae/XHUwMDAw5K5r257z+yx3xTM6JHf7XHUwMDFlXHUwMDFlXHUwMDFm9HpcdTAwMTf+13ur7pdhmVOAjTtvKeFAXHUwMDE2nCjYXHUwMDE45OWOXHUwMDBmcE5cYjJcdTAwMWVcdTAwMWbAhTu2qWKKxKHz6lBur6tF5laN1ffH7GX4bZ84nZqEfPRQimJcdTAwMDZ41upOJqlZflx1MDAxZvhcdTAwMDbjf7XbTmGMlJni4ilpXHUwMDA0JSSUrzKw6Kwrxlx1MDAwN+w8lOHwrnd341Xo3bmsO7JeKrDQ1jhHa8IxXHUwMDExXGKwonNcdTAwMTAzxz1mtlx1MDAwNfxcdTAwMDbIrKUotP9jIFx1MDAxM1x1MDAwMVx1MDAwNdSez1x1MDAwNDLihVx1MDAxM2mISclcdTAwMTRFS1x1MDAxZaEpfZwrhzs04o7h/1x1MDAwNXe5XHUwMDAwd/P3yOFuxcso2eyPXHUwMDAwPZpcdTAwMThBQiDhs8nKXHUwMDFi9Vx1MDAxY1x1MDAwMoKNa1x1MDAxZihcdTAwMGW0mTbAQmabpudcdTAwMTMkyFx1MDAwNDD/eSkk3yQvXHUwMDA1XHUwMDFhp4rMKFx1MDAwNUlcbqXAlcTxxN76reAroIFiOlx0yLBcdTAwMTFfXGag3DGFgudcYq7DXG49OFx1MDAxYbT8c3ZEbs2y4DHFrL71llx1MDAwMCFcdTAwMTla9b7Tn9OHvZ9JrpXwTolcdTAwMWRpXHJcdTAwMTLoXHUwMDAwXHUwMDE2nFEsXHUwMDE0j+du07nwXHUwMDE4OKuXIFxiuI66klpOXHUwMDE4oWRyx+u0U3PrrkVd6thcdTAwMTVcdTAwMThcdTAwMWR0m6R2NTi4rWLuNSzL3CUk9EBcIiXiPYSKSWHqXHUwMDEzZLPv5XV+gMqu9E7s1Vx1MDAwMrsnmv3u7llVja/quFH5at/Vz9uijJsnXGZgjkTey1OlXHUwMDAwMp9cdTAwMTLZuPhlYlVcIpnUf4xTt2hmgjxr2IjQQS5ZxbGrd+9N1tV7h/tPXHUwMDE3x1x1MDAxN8fVXHUwMDFmpNFcdTAwMTmctvYsbo9Oy1CMkVx1MDAwMFTnpYakiyBQNFx1MDAwN7ZcdTAwMDF5XHUwMDE5kClHWCBiXFw+Q1x1MDAwYjZcdTAwMDIpbbV5fMhpdSCLdVx1MDAwNXmxXHUwMDEzWWSOMeAmY4w5oFx1MDAxYoZXtyBcdTAwMDFcdTAwMDXRIVx1MDAxOTHZYjzz30pcdTAwMTjOwCqC+JJcZi+fb+E1XHUwMDAw/dOkY9tWr3dcdTAwMTlZkTNccqK2h64z2s1z88dDck2eqt+Za096Ptm69vrp9Vx1MDAxZlx1MDAwMYGXSCJ9abcdefgh0372
  5. Затем просто берем слово из этого списка начиная с самого первого. Если по каким-то причинам выбранное слово все же не подходит значит берем следующее из списка.
  6. Если список был выбран полностью, тогда генерируется слово случайным образом из 7 букв.

Теги для пакетов

Если опция versioning.source равна tag и пакеты имеют независимые версии, то также будет создаваться пачка тегов вида pkg-name-vX.Y.Z. Однако такой подход не рекомендуется, в виду излишнего замусоривания тегами репозитория.

К релизному тегу, при его создании через platform API, также записываются release notes, о которых мы поговорим в следующей части главы.