diff --git a/docs/CLAUDE-WORKFLOWS.md b/docs/CLAUDE-WORKFLOWS.md index 262a9de..13acafd 100644 --- a/docs/CLAUDE-WORKFLOWS.md +++ b/docs/CLAUDE-WORKFLOWS.md @@ -39,6 +39,31 @@ abstract-2nd → PR (base: abstract-1st, 前回からの差分のみ) → レビ - **次のドラフト**: PR 作成後に自動的に次のブランチが作成される - **PR の扱い**: PR はマージせず、レビュー完了後にクローズして次稿へ継続 +### 教員の Suggest を次のドラフトに取り込む + +PR 作成後、教員が Suggest を投稿した場合、それを次のドラフトブランチに取り込むことができます。 + +```bash +# 現在のブランチで自動判定して取り込み +git checkout 2nd-draft +./scripts/sync-suggestions.sh +# → 自動的に 1st-draft からの Suggest を取り込み + +# ブランチを指定して実行 +./scripts/sync-suggestions.sh 3rd-draft +# → 自動的に 2nd-draft からの Suggest を取り込み +``` + +**動作:** +- 現在のブランチ名から前のドラフトを自動判定 +- 論文本体(xth-draft)と概要(abstract-xth)の両方に対応 +- リモートから最新の変更を取得してマージ +- コンフリクトが発生した場合は手動で解決が必要 + +**注意事項:** +- `1st-draft` や `abstract-1st` では実行できません(前のドラフトが存在しないため) +- マージ後は `git push origin <ブランチ名>` でリモートに反映してください + ## LaTeX コンパイル例 ### 学部生論文のコンパイル diff --git a/scripts/sync-suggestions.sh b/scripts/sync-suggestions.sh new file mode 100755 index 0000000..5aa6d42 --- /dev/null +++ b/scripts/sync-suggestions.sh @@ -0,0 +1,80 @@ +#!/bin/bash +# scripts/sync-suggestions.sh +# +# 前のドラフトブランチから教員の Suggest を取り込むスクリプト +# +# Usage: +# ./scripts/sync-suggestions.sh # 現在のブランチに対して自動判定 +# ./scripts/sync-suggestions.sh 2nd-draft # 指定ブランチに対して実行 + +set -e + +# 引数があればそれを使用、なければ現在のブランチ +if [ -n "$1" ]; then + CURRENT_BRANCH="$1" + git checkout "$CURRENT_BRANCH" +else + CURRENT_BRANCH=$(git branch --show-current) +fi + +echo "現在のブランチ: $CURRENT_BRANCH" + +# 現在のブランチから前のドラフトを自動判定 +if [[ "$CURRENT_BRANCH" =~ ^([0-9]+)(st|nd|rd|th)-draft$ ]]; then + # 論文本体 (例: 2nd-draft → 1st-draft) + CURRENT_NUM="${BASH_REMATCH[1]}" + + if [ "$CURRENT_NUM" -eq 1 ]; then + # 1st-draft の場合は main から + PREV_BRANCH="main" + else + PREV_NUM=$((CURRENT_NUM - 1)) + case $PREV_NUM in + 1) SUFFIX="st" ;; + 2) SUFFIX="nd" ;; + 3) SUFFIX="rd" ;; + *) SUFFIX="th" ;; + esac + PREV_BRANCH="${PREV_NUM}${SUFFIX}-draft" + fi + +elif [[ "$CURRENT_BRANCH" =~ ^abstract-([0-9]+)(st|nd|rd|th)$ ]]; then + # 概要 (例: abstract-2nd → abstract-1st) + CURRENT_NUM="${BASH_REMATCH[1]}" + + if [ "$CURRENT_NUM" -eq 1 ]; then + echo "Error: abstract-1st には前のブランチがありません" + exit 1 + else + PREV_NUM=$((CURRENT_NUM - 1)) + case $PREV_NUM in + 1) SUFFIX="st" ;; + 2) SUFFIX="nd" ;; + 3) SUFFIX="rd" ;; + *) SUFFIX="th" ;; + esac + PREV_BRANCH="abstract-${PREV_NUM}${SUFFIX}" + fi + +else + echo "Error: draft または abstract ブランチではありません: $CURRENT_BRANCH" + exit 1 +fi + +echo "前のドラフト: $PREV_BRANCH" +echo "" + +# リモートから最新を取得 +echo "🔄 リモートから最新の変更を取得中..." +git fetch origin "$PREV_BRANCH" +git fetch origin "$CURRENT_BRANCH" + +# マージ実行 +echo "🔀 $PREV_BRANCH からの変更を $CURRENT_BRANCH にマージ中..." +git merge "origin/$PREV_BRANCH" --no-ff -m "Merge suggestions from $PREV_BRANCH" + +echo "" +echo "✅ 完了: $PREV_BRANCH からの Suggest を $CURRENT_BRANCH に取り込みました" +echo "" +echo "次のステップ:" +echo " git push origin $CURRENT_BRANCH"