Найти в Дзене
3 подписчика

🔬 Анализ и Техническое Решение Проблем Git/FS при Интеграции токенов в PancakeSwap на примере UAHToken

Здравствуйте, сообщество!
Я рад сообщить не только об успешном выполнении технического задания по интеграции гуманитарного токена UAHToken в список токенов PancakeSwap, но и о преодолении критических барьеров, связанных с особенностями файловых систем (ФС) и систем контроля версий (VCS) в среде Windows.
🔗 Суть Успеха: Коммит в Актуальный Репозиторий
Основная цель достигнута: после серии технически сложных операций наш валидный коммит был перенесен в актуальный, правильно форкнутый репозиторий. Сейчас Pull Request (PR) находится на рассмотрении команды PancakeSwap, что является финальным шагом к листингу.
🛠️ Методология: Преодоление Системных Ограничений
Проект PancakeSwap/token-list содержит очень длинные пути и специфические символы (например, ::) в именах файлов токенов, особенно в разделах для Aptos и Solana. Эта структура конфликтует со стандартными ограничениями файловой системы NTFS и обработкой длинных путей в Git для Windows (даже при включении опции core.longpaths).
Проблема: Невалидные Пути (Invalid Path Errors)
Каждая попытка клонирования репозитория в локальную среду Windows приводила к ошибкам error: invalid path и оставляла репозиторий в нерабочем, частично склонированном состоянии, где Git воспринимал тысячи файлов как "удаленные" (delete mode 100644).
Уникальный Стек Решений
Для решения этой системной проблемы был применен уникальный двухфазный стек:

Фаза 1: Локальная Борьба и Фиксация Изменений (Windows/PowerShell)
Проводились многократные попытки клонирования с настройками git config --system core.longpaths true и использованием git restore --source=HEAD :/ для восстановления рабочего дерева, что в итоге подтвердило неработоспособность стандартного стека.
Тем не менее, удалось локально скопировать и зафиксировать необходимые данные токена UAH DAO в рабочую ветку (feat/add-uah-dao-tokens) старого форка (UAH-Pancakeswap-TokenList-Toolkit).
Фаза 2: Облачная Коррекция Истории (GitHub Codespaces / Linux)
Для обхода системных ограничений Windows и проблемы разных историй коммитов был использован GitHub Codespaces (среда Linux в браузере), где нет проблем с длинными путями.
Мы создали правильный форк (UAHToken-PancakeSwap-TokenList-Fork), имеющий общую историю с целью.
С помощью команды git cherry-pick [ID_КОММИТА] мы извлекли валидный коммит из старого репозитория и перенесли его в новую, чистую ветку в правильном форке.
Эта методология позволила изолировать проблему, спасти уже созданный коммит и представить его в виде чистого, соответствующего стандартам Pull Request'а, который сейчас готов к слиянию.
📖 Инструкция: Как Применить Свою Работу в Чистый PR (Метод Cherry-Pick)
Для тех, кто столкнется с аналогичной проблемой разных историй или невалидных путей в Windows, вот краткое описание рабочего процесса, который спас наш коммит:

Создайте Коммит Локально: В локальной среде, которая у вас работает, создайте и отправьте коммит с вашими изменениями в любую ветку (даже в неправильный форк).
Получите ID Коммита:
Bash

git log -1 --pretty=format:"%H"
Скопируйте полученный 40-значный ID.
Запустите Codespaces на Правильном Форке: Откройте целевой репозиторий на GitHub и запустите Codespaces (это среда Linux).
Создайте Целевую Ветку:
Bash

git checkout -b feat/my-clean-pr
Примените Коммит (Cherry-Pick):
Bash

git cherry-pick [ID_ВАШЕГО_КОММИТА]
(Опционально) Очистите: Если cherry-pick перенес лишние файлы (как в нашем случае, .husky), удалите их и скорректируйте коммит:
Bash

git rm -r .husky
git commit --amend --no-edit
Отправьте:
Bash

git push -u origin feat/my-clean-pr
Этот подход позволяет использовать гибкость Git для переноса изолированных, валидных изменений, преодолевая ограничения файловой системы и устаревшие репозитории.
Я продолжаю следить за процессом и благодарю сообщество за поддержку миссии UAHToken!
3 минуты