diff options
author | robot-piglet <robot-piglet@yandex-team.com> | 2025-01-29 18:18:39 +0300 |
---|---|---|
committer | robot-piglet <robot-piglet@yandex-team.com> | 2025-01-29 18:55:30 +0300 |
commit | 990134ea1c1dcd59e82ddd24ae586672b8a37724 (patch) | |
tree | 5ff47a3f8ce28204c613093ca00a0f564f19433c | |
parent | 12394c9c74f3eef93303aefdfe3a2af02c48315a (diff) | |
download | ydb-990134ea1c1dcd59e82ddd24ae586672b8a37724.tar.gz |
Intermediate changes
commit_hash:8ceff1e2daa0d2a28f7a6f7e138c6051d47b2912
-rw-r--r-- | yql/essentials/docs/scripts/README.md | 6 | ||||
-rwxr-xr-x | yql/essentials/docs/scripts/doc_upgrade_arc.sh | 69 | ||||
-rwxr-xr-x | yql/essentials/docs/scripts/doc_upgrade_git.sh | 64 |
3 files changed, 74 insertions, 65 deletions
diff --git a/yql/essentials/docs/scripts/README.md b/yql/essentials/docs/scripts/README.md index 57541957d7..4517d4dc49 100644 --- a/yql/essentials/docs/scripts/README.md +++ b/yql/essentials/docs/scripts/README.md @@ -21,7 +21,7 @@ Аналогичный скрипт для git-репозитория находится по пути `yql/essentials/docs/scripts/doc_upgrade_git.sh` -### Обновление документаци +### Обновление документации ```bash ./yql/essentials/docs/scripts/doc_upgrade_arc.sh <dst_path>/<src.cfg> @@ -30,11 +30,11 @@ Скрипт последовательно выполняет следующие действия: 1. Читает базовую ревизию (rSRC) и путь-источник из `<dst_path>/<src.cfg>` 2. Строит diff для ревизии rSRC между `<dst_path>` и путем-источником -3. На место `<dst_path>` копируется содержимое из путя-источника с текущей ревизией +3. На место `<dst_path>` копируется содержимое из пути-источника с текущей ревизией 4. На `<dst_path>` накладывается патч из п.2 5. В `<dst_path>/<src.cfg>` обновляется ревизия на текущую -В итоге, документация получает все изменения из путя-источника, произошедшие с момента последнего обновления. В случае конфликтов, они остаются в исходных файлах в виде конфликт-маркеров (`>>>>`/`<<<<`) и должны быть порезолвлены вручную. +В итоге, документация получает все изменения из пути-источника, произошедшие с момента последнего обновления. В случае конфликтов, они остаются в исходных файлах в виде конфликт-маркеров (`>>>>`/`<<<<`) и должны быть порезолвлены вручную. ### Ограничения diff --git a/yql/essentials/docs/scripts/doc_upgrade_arc.sh b/yql/essentials/docs/scripts/doc_upgrade_arc.sh index a165d4ad29..a1403408ed 100755 --- a/yql/essentials/docs/scripts/doc_upgrade_arc.sh +++ b/yql/essentials/docs/scripts/doc_upgrade_arc.sh @@ -8,35 +8,37 @@ if [ ! -f $TARGET_INFO_FILE ]; then if [ "$2" == "" ]; then echo "Expected source folder as the second argument" >&2 - exit + exit 1 fi if [ ! -d "$2" ]; then echo "Expected $2 to be a directory" >&2 - exit + exit 1 fi FROM=$(realpath $2) ARC_ROOT=$(cd $FROM; arc root) HEAD=$(cd $FROM; arc rev-parse HEAD) # Normalize FROM relativly to the arc root - FROM=${FROM#$ARC_ROOT/} - echo "$HEAD;$FROM" > $TARGET_INFO_FILE + ARC_FROM=${FROM#$ARC_ROOT/} + echo "$HEAD;$ARC_FROM" > $TARGET_INFO_FILE echo "Filled in $TARGET_INFO_FILE" exit fi -IFS=';' read -r BASE_REV INFO_FROM < "$TARGET_INFO_FILE" +IFS=';' read -r BASE_REV ARC_FROM < "$TARGET_INFO_FILE" TO=$(dirname $(realpath "$TARGET_INFO_FILE")) HEAD_REV=$(cd $TO; arc rev-parse HEAD) ARC_ROOT=$(cd $TO; arc root) -FROM="$ARC_ROOT/$INFO_FROM" +FROM="$ARC_ROOT/$ARC_FROM" +ARC_TO=${TO#$ARC_ROOT/} +DATETIME=$(date '+%Y-%m-%d-%H-%M-%S') echo "Base revision: $BASE_REV" echo "Head revision: $HEAD_REV" echo "Arc root: $ARC_ROOT" -echo "Source: $FROM" -echo "Target: $TO" +echo "Source: $ARC_FROM" +echo "Target: $ARC_TO" if [ "$(cd $TO; arc status -s -u all | wc -l)" != "0" ]; then echo "Target $TO has uncommited changes" >&2 @@ -45,44 +47,45 @@ fi cd $ARC_ROOT -CURRENT_BRANCH=$(arc info | grep 'branch:') -CURRENT_BRANCH=${CURRENT_BRANCH#branch: } PATCH_FILE=$(mktemp) -BRANCH=upgrade-$(date '+%Y-%m-%d-%H-%M-%S') - -clean_up () { - ARG=$? - echo "Deleting patch file" - rm $PATCH_FILE - exit $ARG -} -trap clean_up EXIT - -echo "Use $BRANCH temporary branch, $PATCH_FILE patch file" -arc co $BASE_REV -b $BRANCH -rsync -r --delete --filter='. -' -v $TO/ $FROM << EOF +EXPORT_DIR=$(mktemp -d) + +echo "Use $EXPORT_DIR export dir" +arc export $BASE_REV "$ARC_FROM" --to "$EXPORT_DIR" +rsync -r --delete --filter='. -' "$EXPORT_DIR/$ARC_FROM/" "$TO" << EOF + /*/ + *.md + toc_*.yaml - /* EOF -arc add -A $INFO_FROM +rm -rf "$EXPORT_DIR" || true + +arc add -A $ARC_TO -arc diff --cached --relative=$INFO_FROM > $PATCH_FILE -arc reset -arc co $INFO_FROM +arc diff --cached --reverse --relative=$ARC_TO > $PATCH_FILE +arc reset --hard arc clean -d -arc st -arc co "$CURRENT_BRANCH" -arc br -D $BRANCH -rsync -r --delete --filter='. -' -v $FROM/ $TO << EOF +arc status + +rsync -r --delete --filter='. -' "$FROM/" "$TO" << EOF + /*/ + *.md + toc_*.yaml +P _assets/* - /* EOF -patch -d $TO -p0 -N -E --no-backup-if-mismatch --merge -i $PATCH_FILE -t +patch -d "$TO" -p0 -N -E --no-backup-if-mismatch --merge -i $PATCH_FILE -t || echo "Patch has conflicts. Consider to review them before commit" -echo "$HEAD_REV;$INFO_FROM" > $TARGET_INFO_FILE +if [ "$(cd $TO; arc status -s -u all | wc -l)" != "0" ]; then + echo "$HEAD_REV;$ARC_FROM" > $TARGET_INFO_FILE +else + echo "Nothing changed" +fi + +if [ -v KEEP_PATCH ]; then + mv "$PATCH_FILE" "$TO/$DATETIME.patch" +else + rm "$PATCH_FILE" +fi diff --git a/yql/essentials/docs/scripts/doc_upgrade_git.sh b/yql/essentials/docs/scripts/doc_upgrade_git.sh index 75573c5b63..86ab33bcb9 100755 --- a/yql/essentials/docs/scripts/doc_upgrade_git.sh +++ b/yql/essentials/docs/scripts/doc_upgrade_git.sh @@ -1,5 +1,5 @@ #!/bin/bash -set -eux +set -eu TARGET_INFO_FILE="$(realpath $1)" @@ -20,23 +20,25 @@ if [ ! -f $TARGET_INFO_FILE ]; then GIT_ROOT=$(cd $FROM; git rev-parse --show-toplevel) HEAD=$(cd $FROM; git rev-parse HEAD) # Normalize FROM relativly to the git root - FROM=${FROM#$GIT_ROOT/} - echo "$HEAD;$FROM" > $TARGET_INFO_FILE + GIT_FROM=${FROM#$GIT_ROOT/} + echo "$HEAD;$GIT_FROM" > $TARGET_INFO_FILE echo "Filled in $TARGET_INFO_FILE" exit fi -IFS=';' read -r BASE_REV INFO_FROM < "$TARGET_INFO_FILE" +IFS=';' read -r BASE_REV GIT_FROM < "$TARGET_INFO_FILE" TO=$(dirname $(realpath "$TARGET_INFO_FILE")) HEAD_REV=$(cd $TO; git rev-parse HEAD) GIT_ROOT=$(cd $TO; git rev-parse --show-toplevel) -FROM="$GIT_ROOT/$INFO_FROM" +FROM="$GIT_ROOT/$GIT_FROM" +GIT_TO=${TO#$GIT_ROOT/} +DATETIME=$(date '+%Y-%m-%d-%H-%M-%S') echo "Base revision: $BASE_REV" echo "Head revision: $HEAD_REV" echo "Git root: $GIT_ROOT" -echo "Source: $FROM" -echo "Target: $TO" +echo "Source: $GIT_FROM" +echo "Target: $GIT_TO" if [ "$(cd $TO; git status -s -u | wc -l)" != "0" ]; then echo "Target $TO has uncommited changes" >&2 @@ -45,43 +47,47 @@ fi cd $GIT_ROOT -CURRENT_BRANCH=$(git branch --show-current) PATCH_FILE=$(mktemp) -BRANCH=upgrade-$(date '+%Y-%m-%d-%H-%M-%S') - -clean_up () { - ARG=$? - echo "Deleting patch file" - rm $PATCH_FILE - exit $ARG -} -trap clean_up EXIT - -echo "Use $BRANCH temporary branch, $PATCH_FILE patch file" -git checkout -b $BRANCH $BASE_REV -rsync -r --delete --filter='. -' -v $TO/ $FROM << EOF +EXPORT_DIR=$(mktemp -d) + +echo "Use $EXPORT_DIR export dir" +git clone --no-hardlinks "$GIT_ROOT/.git" "$EXPORT_DIR" +(cd $EXPORT_DIR; git reset --hard $BASE_REV) + +rsync -r --delete --filter='. -' "$EXPORT_DIR/$GIT_FROM/" "$TO" << EOF + /*/ + *.md + toc_*.yaml - /* EOF -git add -A $INFO_FROM +rm -rf "$EXPORT_DIR" || true -git diff --cached --binary --relative=$INFO_FROM > $PATCH_FILE +git add -A $GIT_TO + +git diff --cached --binary -R --relative=$GIT_TO > $PATCH_FILE git reset --hard git clean -d -f git status -git checkout "$CURRENT_BRANCH" -git branch -D $BRANCH -rsync -r --delete --filter='. -' -v $FROM/ $TO << EOF + +rsync -r --delete --filter='. -' "$FROM/" "$TO" << EOF + /*/ + *.md + toc_*.yaml +P _assets/* - /* EOF -patch -d $TO -p1 -N -E --no-backup-if-mismatch --merge -i $PATCH_FILE -t -#git apply --whitespace=nowarn --directory=$TO --reject $PATCH_FILE +patch -d "$TO" -p1 -N -E --no-backup-if-mismatch --merge -i $PATCH_FILE -t || echo "Patch has conflicts. Consider to review them before commit" -echo "$HEAD_REV;$INFO_FROM" > $TARGET_INFO_FILE +if [ "$(cd $TO; git status -s -u | wc -l)" != "0" ]; then + echo "$HEAD_REV;$GIT_FROM" > $TARGET_INFO_FILE +else + echo "Nothing changed" +fi + +if [ -v KEEP_PATCH ]; then + mv "$PATCH_FILE" "$TO/$DATETIME.patch" +else + rm "$PATCH_FILE" +fi |