Skip to content

Instantly share code, notes, and snippets.

View rainbow23's full-sized avatar
🏠
Working from home

rainbow23 rainbow23

🏠
Working from home
View GitHub Profile
# pack_blocks_utf8bom.awk
# 目的:
# - ブロックを1セル(1フィールド)のCSVとして出力(ブロック内改行はそのまま)
# - 区切りは次のどちらかの行が出た時点:
# 1) 行頭が "Change-Id:"
# 2) 行頭が "Merge" かつ 行末が "into car-apps-dev"
#
# メモ:
# - 出力はUTF-8(BOM付き) -> Windows版Excelで文字化けしにくい
# - ダブルクォートは CSV 仕様に合わせて "" にエスケープ
=IF(
A2="",
"",
HYPERLINK(
"https://android.googlesource.com/platform/packages/apps/Car/libs/+/" & TRIM(A2),
A2
)
)
=IFERROR(
HYPERLINK(
XLOOKUP($A2, dog!$A:$A, dog!$C:$C), /* URL を取得 */
XLOOKUP($A2, dog!$A:$A, dog!$A:$A) /* 表示文字を取得(=ID文字列)*/
),
""
)
esc_msg=${msg//\"/\"\"}
esc_msg=${esc_msg//$'\r'/}
esc_msg=${esc_msg//$'\n'/\\n}
printf '%s,"%s"\n' "$id" "$esc_msg" >> commits.csv
# commit_to_csv.awk
# 1列目: 40桁の commit id
# 2列目: author 行から (先頭空白可の) Change-Id 行まで(Change-Id行を含む)
# CSVセルはダブルクオートで囲み、内部の " は "" にエスケープ
function csv_escape(s, t) {
t = s
gsub(/"/, "\"\"", t) # " -> ""
return "\"" t "\""
}
#!/usr/bin/env bash
set -euo pipefail
if [ $# -lt 1 ] || [ $# -gt 2 ]; then
echo "Usage: $0 <block-log> [output-prefix]" >&2
exit 1
fi
BLOCKLOG="$1"
PREFIX="${2:-pana}" # デフォルトは "pana"
# 例: 既存のログ生成 → ブロック整形表示
git log --pretty=format:"%ad %H %an <%ae> %s" --date=format:"%Y-%m-%d %H:%M:%S" --name-status -- \
| awk '
# 対象: 「行頭が TARGET/NO_TARGET で、かつ日時 YYYY-MM-DD HH:MM:SS が続く」行だけ
# それ以外の行は捨てる(必要なら {print} に変えてください)
# TARGET 行
/^TARGET[[:space:]]+[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/ {
# 日時を取り出す(先頭から2フィールド結合)
tgt_date = $2 " " $3
awk '
BEGIN{ g=0; inblk=0 }
# TARGET 行(コミットID抽出)
/^TARGET/ {
# 40桁のGitハッシュ想定。必要に応じて [0-9a-f]{40} を緩めてもOK。
if (match($0, /[0-9a-f]{40}/, m)) {
if (!inblk) { g++; inblk=1; first[g]=""; last[g]="" }
if (first[g]=="") first[g]=m[0]; # ブロックの先頭(新しい側)
last[g]=m[0]; # 常に更新→最後に見えた(古い側)
}
datetime=$(TZ=Asia/Tokyo date +'%Y%m%d%H%M%S')
echo "$datetime"
; =============================================================
; Kazoeciao Auto-Exec (.cas) — sample generated for your case
; Edit to match your environment (absolute Windows paths, etc.)
; * AFTPATH = "変更後" folder
; * BFRPATH = "変更前" folder
; * EXEMODE mapping (typical):
; 1 = Compare Steps (差分)
; 2 = Count Number of Steps Before Change(変更前ステップ数)
; 3 = Count Number of Steps After Change(変更後ステップ数)
; =============================================================