Alert

์ด ๊ธ€์€ Claude Code์˜ ๋„์›€์„ ๋ฐ›์•„ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค

TL;DR

  • hunk์€ ํ„ฐ๋ฏธ๋„์—์„œ diff๋ฅผ GitHub์ฒ˜๋Ÿผ ๋ณด์—ฌ์ฃผ๋Š” ์ฝ”๋“œ ๋ฆฌ๋ทฐ TUI โ€” Sentry ๊ณต๋™์ฐฝ์—…์ž Ben Vinegar ์ œ์ž‘
  • syntax highlighting, side-by-side/stacked ๋ทฐ, vim ๋ชจ์…˜, ๋ผ์ธ ๋‹จ์œ„ ๋…ธํŠธ(์ฝ”๋ฉ˜ํŠธ) ์ œ๊ณต
  • ํ•ต์‹ฌ์€ AI ์—์ด์ „ํŠธ๊ฐ€ ์ฝ”๋“œ์— ์ฝ”๋ฉ˜ํŠธ๋ฅผ ๋‚จ๊ธฐ๋Š” ์›Œํฌํ”Œ๋กœ โ€” ์‚ฌ๋žŒ ๋…ธํŠธ์™€ ์—์ด์ „ํŠธ ๋…ธํŠธ๊ฐ€ ๋‚˜๋ž€ํžˆ ํ‘œ์‹œ
  • git๊ณผ Jujutsu(jj)๋ฅผ ๋‘˜ ๋‹ค first-class๋กœ ์ง€์›, ํ•˜์ง€๋งŒ ์„ธ์…˜์ด ๋๋‚˜๋ฉด ์ฝ”๋ฉ˜ํŠธ๊ฐ€ ํœ˜๋ฐœ๋ผ ํ˜‘์—… ๊ณต์œ ๋Š” ์•ฝํ•จ

Source


์ •๋ฆฌ

์Ÿ์•„์ง€๋Š” PR์„ ํ„ฐ๋ฏธ๋„์—์„œ ์ œ๋Œ€๋กœ ๋ฆฌ๋ทฐํ•˜์ž๊ณ  ๋งŒ๋“  ๋„๊ตฌ๋‹ค. DevOps Toolbox๊ฐ€ ์†Œ๊ฐœํ•œ hunk์€ Sentry ๊ณต๋™์ฐฝ์—…์ž์˜€๋˜ Ben Vinegar๊ฐ€ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ, Ghostty๋กœ ์œ ๋ช…ํ•œ Mitchell Hashimoto๊ฐ€ ์• ์šฉํ•œ๋‹ค๊ณ  ์•Œ๋ ค์ง€๋ฉฐ ์ฃผ๋ชฉ๋ฐ›์•˜๋‹ค. ๋ฐ”ํƒ•์€ OpenTUI(OpenCode๋ฅผ ๋งŒ๋“  Anomaly์˜ ํ”„๋ ˆ์ž„์›Œํฌ)๋‹ค.

git diff๋ฅผ ์˜ˆ์˜๊ฒŒ ๋ณด์—ฌ์ฃผ๋Š” ๋„๊ตฌ์•ผ ์ด๋ฏธ ๋งŽ๋‹ค. diff-so-fancy, Rust๋กœ ๋งŒ๋“  delta, delta ์œ„์— TUI๋ฅผ ์–น์€ diffnav๊ฐ€ ๊ทธ๋Ÿฐ ๊ณ„๋ณด๋‹ค. hunk์€ ๋‹จ์ˆœ diff ๋ทฐ์–ด์—์„œ ํ•œ๋ฐœ ๋” ๋‚˜๊ฐ€ ๋ฆฌ๋ทฐ ์›Œํฌํ”Œ๋กœ ์ž์ฒด๋ฅผ ๋…ธ๋ฆฐ๋‹ค๋Š” ์ ์ด ๋‹ค๋ฅด๋‹ค.

์„ค์น˜์™€ ๊ธฐ๋ณธ ๋ช…๋ น์€ ๊ฐ„๋‹จํ•˜๋‹ค.

brew install hunk   # ๋˜๋Š” npm
hunk show           # ๋งˆ์ง€๋ง‰ ์ปค๋ฐ‹์˜ diff
hunk diff           # ์•„์ง ์ปค๋ฐ‹ ์•ˆ ๋œ working ๋ณ€๊ฒฝ
hunk session        # ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์„œ๋ฒ„ โ€” ์—์ด์ „ํŠธ๊ฐ€ ๋ถ™๋Š” ์šฉ๋„
hunk stash show     # stash ์Šคํƒ์˜ ๋ณ€๊ฒฝ ํ™•์ธ

์ฃผ์š” ๊ธฐ๋Šฅ์„ ์ •๋ฆฌํ•˜๋ฉด ์ด๋ ‡๋‹ค.

  • ๋ทฐ: GitHub ์Šคํƒ€์ผ syntax highlighting, stacked / side-by-side ํ† ๊ธ€, ํŒŒ์ผ๋ณ„ +/- ๋ผ์ธ ์ˆ˜, ํ…Œ๋งˆ ์ง€์›
  • ๋ชจ์…˜: Ctrl+D/U ์Šคํฌ๋กค, [ ] hunk ์ด๋™, gg/G, hjkl ๋“ฑ vim ํ‚ค๋งต ๊ทธ๋Œ€๋กœ
  • ๋…ธํŠธ: ๋ผ์ธ ์˜† +๋กœ GitHub ์ฝ”๋ฉ˜ํŠธ ๊ฐ™์€ ๋ฉ”๋ชจ๋ฅผ ๋‚จ๊น€. { }๋กœ ๋…ธํŠธ ๊ฐ„ ์ด๋™. ๋‹จ git์— ๊ธฐ๋ก๋˜์ง€ ์•Š๊ณ  ์„ธ์…˜ ํ•œ์ •์ด๋ผ ๋๋‚˜๋ฉด ์‚ฌ๋ผ์ง
  • AI ๋…ธํŠธ: hunk session์ด ์ž‘์€ ์„œ๋ฒ„๋ฅผ ๋„์šฐ๋ฉด ์ฝ”๋”ฉ ์—์ด์ „ํŠธ๊ฐ€ diff๋ฅผ ์ฝ๊ณ  ์ฝ”๋“œ์— ์ฝ”๋ฉ˜ํŠธ๋ฅผ ๋‹จ๋‹ค. ์‚ฌ๋žŒ์ด ๋‹จ ๋…ธํŠธ์™€ ์—์ด์ „ํŠธ ๋…ธํŠธ๊ฐ€ ์‚ฌ์ด๋“œ๋ฐ”(S)์— ์ƒ‰์œผ๋กœ ๊ตฌ๋ถ„๋ผ ํ•จ๊ป˜ ๋ณด์ธ๋‹ค
  • VCS: git๋ฟ ์•„๋‹ˆ๋ผ Jujutsu(jj)๋„ first-class ์ง€์› โ€” Mitchell Hashimoto๊ฐ€ ์ข‹์•„ํ•˜๋Š” ์ด์œ 
  • ์„ค์ •: ~/.config/hunk ์•„๋ž˜ TOML๋กœ VCSยท๋ทฐยทํ…Œ๋งˆยท๋ผ์ธ๋ฒˆํ˜ธยท๋…ธํŠธ ๊ธฐ๋ณธ๊ฐ’ ์ง€์ •

ํ•œ๊ณ„๋„ ๋ถ„๋ช…ํ•˜๋‹ค. TUI ๊ฒฝํ—˜์€ ์ข‹์ง€๋งŒ ํ˜‘์—…์—๋Š” ์•ฝํ•˜๋‹ค. ์ฝ”๋ฉ˜ํŠธ๊ฐ€ GitHub ์ฝ”๋ฉ˜ํŠธ์™€ ๋™๊ธฐํ™”๋˜์ง€ ์•Š๊ณ  ์„ธ์…˜๋„ ๊ณต์œ ํ•  ์ˆ˜ ์—†๋‹ค. ๋ฆฌ๋ทฐ๊ฐ€ ๋๋‚˜๋ฉด ๋…ธํŠธ๋Š” ๊ทธ๋ƒฅ ์ฆ๋ฐœํ•œ๋‹ค. ํ˜ผ์ž, ํ˜น์€ ์—์ด์ „ํŠธ์™€ ํ•จ๊ป˜ ๋กœ์ปฌ์—์„œ ๋น ๋ฅด๊ฒŒ ํ›‘์–ด๋ณด๋Š” ์šฉ๋„์—๋Š” ๋งž์ง€๋งŒ ํŒ€ ๋ฆฌ๋ทฐ๋ฅผ ๋Œ€์ฒดํ•˜๊ธฐ์—” ์•„์ง ๊ฐˆ ๊ธธ์ด ๋ฉ€๋‹ค. GitHub ์ฝ”๋ฉ˜ํŠธ๋ฅผ ํ„ฐ๋ฏธ๋„๋กœ ๋‹ค๋ฃจ๋Š” gh-dash ๊ณ„์—ด๊ณผ๋Š” ๋…ธ๋ฆฌ๋Š” ์ง€์ ๋ถ€ํ„ฐ ๋‹ค๋ฅด๋‹ค.