Около года назад я опубликовал сообщение на платформе Discourse GitHub, в котором привёл множество ссылок вида «https://github.com/OWNER/REPO/tree/BRANCH/path», чтобы обсудить, как GitHub.com обрабатывает такие URL. Моё сообщение сразу же было отредактировано системой с сообщением «Ссылка на GitHub заменена на постоянную ссылку», что, судя по всему, вызвано плагином discourse-github. Хотя замена названия ветки на постоянную ссылку на конкретный коммит может быть полезной функцией в типичном случае, когда пост цитирует определённый код, в специальном случае обсуждения обработки URL GitHub это редактирование уничтожило смысл моего сообщения. Мне повезло, что я сразу заметил правку бота, и после нескольких раундов борьбы с ним я в конце концов нашёл обходной путь: добавление тега <span>, чтобы предотвратить совпадение шаблона бота, например:
https://github.com/OWNER/REPO/tree/<span>BRANCH</span>/PATH
Однако другие авторы могут не заметить правку бота и оставить пост, который запутает читателей.
Какое лучшее решение, чтобы избежать нежелательных правок постоянных ссылок GitHub в конкретном сообщении? В целом, я считаю, что ботам не следует автоматически редактировать посты, рискуя испортить их. Безопаснее было бы (1) спрашивать автора при сохранении поста, нужно ли редактировать ссылки, или (2) заставлять бота добавлять постоянную ссылку, не удаляя исходную. (Кажется, я видел подобных ботов на других сайтах, возможно, на Reddit, которые добавляют информацию, не удаляя существующую.) Если разработчики Discourse считают эти варианты слишком некрасивыми или слишком трудоёмкими для редкого случая использования, можно рассмотреть другие варианты: (3) показывать уведомление после сохранения поста со ссылкой на информацию о том, как автор может избежать таких правок при необходимости — либо (a) в виде отдельного баннера в интерфейсе, либо (b) просто строки текста, добавленной ботом в конец поста.
Я не уверен, какой дизайн будет наиболее разумным для того, чтобы автор мог отказаться от таких правок. Настройки исключения на уровне всего сайта в плагине discourse-github, основанные на целевой ссылке, не подходят для этой цели. Возможно, мой текущий обходной путь с тегом <span> будет достаточным. Даже если в Discourse ничего не изменится, я надеюсь, что этот пост поможет другим авторам, которые заметят проблему, легче найти обходной путь.
Примечание: ранее я поднимал эту тему на форуме GitHub, так как предполагал, что бот «постоянной ссылки» специфичен для экземпляра GitHub, но один из комментаторов сообщил мне, что это общая функция Discourse, поэтому я поднимаю этот вопрос здесь.
Спасибо за внимание!