aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrobot-piglet <robot-piglet@yandex-team.com>2025-01-29 18:18:39 +0300
committerrobot-piglet <robot-piglet@yandex-team.com>2025-01-29 18:55:30 +0300
commit990134ea1c1dcd59e82ddd24ae586672b8a37724 (patch)
tree5ff47a3f8ce28204c613093ca00a0f564f19433c
parent12394c9c74f3eef93303aefdfe3a2af02c48315a (diff)
downloadydb-990134ea1c1dcd59e82ddd24ae586672b8a37724.tar.gz
Intermediate changes
commit_hash:8ceff1e2daa0d2a28f7a6f7e138c6051d47b2912
-rw-r--r--yql/essentials/docs/scripts/README.md6
-rwxr-xr-xyql/essentials/docs/scripts/doc_upgrade_arc.sh69
-rwxr-xr-xyql/essentials/docs/scripts/doc_upgrade_git.sh64
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