Содержимое пина, зафиксированного в go.mod sing-box-lx, одним коммитом без истории. Полная история SagerNet/gvisor — 1.45 ГБ и клонируется в каждой CI-джобе; наша дельта — одна вставка в одну функцию, история для неё не нужна. Module path github.com/sagernet/gvisor сохранён намеренно: на него опирается replace-директива суперпроекта. Патч поверх — отдельным коммитом, чтобы дельта читалась одним git show и переносилась на новый пин копированием. SPECS/TASKS/048-GVISOR_HANDSHAKE_NIL_CRASH
37 lines
640 B
Bash
37 lines
640 B
Bash
#!/usr/bin/env bash
|
|
|
|
set -e -o pipefail
|
|
|
|
OLD_MODULE_NAME="gvisor.dev/gvisor"
|
|
NEW_MODULE_NAME="github.com/sagernet/gvisor"
|
|
|
|
rules=$(cat <<EOF
|
|
id: replace-module
|
|
language: go
|
|
rule:
|
|
kind: import_spec
|
|
pattern: \$OLD_IMPORT
|
|
constraints:
|
|
OLD_IMPORT:
|
|
has:
|
|
field: path
|
|
regex: ^"$OLD_MODULE_NAME
|
|
transform:
|
|
NEW_IMPORT:
|
|
replace:
|
|
source: \$OLD_IMPORT
|
|
replace: $OLD_MODULE_NAME(?<PATH>.*)
|
|
by: $NEW_MODULE_NAME\$PATH
|
|
fix: \$NEW_IMPORT
|
|
EOF
|
|
)
|
|
|
|
sg scan --inline-rules "$rules" -U
|
|
|
|
sed -i "s|module $OLD_MODULE_NAME|module $NEW_MODULE_NAME|" go.mod
|
|
|
|
go mod tidy
|
|
|
|
./reformat.sh
|
|
|
|
git commit -m "Rename module" -a
|