Gitflow: getopt๋Š” Mac OS X์—์„œ ์ธ์ˆ˜์— ๊ณต๋ฐฑ์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2011๋…„ 02์›” 04์ผ  ยท  10์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: nvie/gitflow

๋ฒ„๊ทธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋…ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

$ git flow init    # accept the defaults
$ echo "foo" > foo
$ git add . && git commit -m 'Add foo'    # on develop
$ git flow release start 0.1.0
$ echo "bar" > bar
$ git add . && git commit -m 'Add bar'    # on release/0.1.0
$ git flow release finish -m "Test release" 0.1.0
flags:FATAL the available getopt does not support spaces in options

-m ํ”Œ๋ž˜๊ทธ์˜ ๊ณต๊ฐ„์—๋Š” Mac OS X getopt๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜์—†๋Š” ๊ณต๊ฐ„์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‚˜๋Š” ๋‚ด๊ฐ€์ด ํŒŒํ‹ฐ์— ๋Šฆ์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ, ์•„๋ž˜๋Š” ์œ„์™€ # 50์—์„œ ์„ค๋ช…ํ•œ ๋ฌธ์ œ์—†์ด OS X์— git-flow๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์™€ ๋™๋ฃŒ๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์ง€์นจ์ž…๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ๋‘ ๊ฐ€์ง€๋กœ ์š”์•ฝ๋ฉ๋‹ˆ๋‹ค.

  • # 160์—์„œ ์ฐธ์กฐ ๋œ ํŒจ์น˜๋ฅผ ๊ฐ€์ ธ ์˜ค๋ ค๋ฉด ์ตœ์‹  ๋ฒ„์ „์˜ git-flow๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.
  • gnu-getopt์™€ ํ•จ๊ป˜ ์ตœ์‹  ๋ฒ„์ „์˜ shflags (์‚ฌ์šฉ์ž ์ง€์ • getopt ์œ ํ‹ธ๋ฆฌํ‹ฐ ์ง€์›)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด ์ง€์นจ์€ Homebrew๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค๋ฅธ ์„ค์น˜ ๋Œ€์•ˆ์ด ํฌํ•จ ๋œ ๊ธด ๋ฌธ์„œ์—์„œ ๋ฐœ์ทŒ ํ•œ ๊ฒƒ์ด์ง€๋งŒ ์—ฌ๊ธฐ์— ์–ธ๊ธ‰ ๋œ ๋‚ด์šฉ์€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค์€ ๋ชจ๋‘ ๋ฒ„๊ทธ ๋˜๋Š” ํŠน์„ฑ์œผ๋กœ ์ธํ•ด ์–ด๋Š ์ •๋„์˜ ๋ฐ”์šด๋“œ๋ฅผ ํฌํ•จํ•˜๋ฉฐ, ๋” ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ถ๊ธˆํ•˜์‹  ๋ถ„๋“ค์„ ์œ„ํ•ด ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์ œ๊ณตํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. git-flow์˜ ์ƒˆ ๋ฆด๋ฆฌ์Šค๊ฐ€ Homebrew์— ์Šค๋ฉฐ ๋“ค๋ฉด์ด ๋ชจ๋“  ๊ฒƒ์ด ๋ถˆํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋ช…๋ น:

์ตœ์‹  shflags๋กœ ์ตœ์‹  git-flow๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

$ git clone git://github.com/nvie/gitflow.git
$ cd gitflow
$ git svn clone -r HEAD http://shflags.googlecode.com/svn/trunk/source/1.0 shFlags
$ sudo make install

git ์—†์ด๋„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ curl -L https://github.com/nvie/gitflow/tarball/develop | tar --exclude '*shFlags' -s '/nvie-\(gitflow\)-[a-z0-9]\{1,\}/\1/' -xvf -
$ cd gitflow
$ curl -L -o gitflow-shFlags http://shflags.googlecode.com/svn/trunk/source/1.0/src/shflags
$ sudo make install

gnu-getopt (Homebrew ํฌํ•จ)๋ฅผ ์„ค์น˜ํ•˜๊ณ ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก shflags๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

$ brew install gnu-getopt
$ echo 'export FLAGS_GETOPT_CMD="$(brew --prefix gnu-getopt)/bin/getopt"' >> ~/.bashrc

์ƒˆ ํ„ฐ๋ฏธ๋„ ์„ธ์…˜์„ ์‹œ์ž‘ํ•˜์—ฌ ๋กœ๊ทธ์ธ ์…ธ์ด FLAGS_GETOPT_CMD๋ฅผ ์„ ํƒํ–ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

$ echo $FLAGS_GETOPT_CMD

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์„ ๋ฐ˜ํ™˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. /usr/local/Cellar/gnu-getopt/1.1.4/bin/getopt

๋ชจ๋“  10 ๋Œ“๊ธ€

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ €๋Š” OSX์—์„œ ์ผํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฏธ๋ฆฌ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๋‚˜๋Š” ํฐ ๋ฉ์ฒญ์ด์ด๊ธฐ ๋•Œ๋ฌธ์— textmate๋ฅผ ๋‚ด ์ž์‹ ํŽธ์ง‘๊ธฐ๋กœ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ํ„ฐ๋ฏธ๋„ ํŽธ์ง‘๊ธฐ (vi, pico, nano ๋“ฑ)๋กœ ์ „ํ™˜ํ–ˆ๊ณ  ๋” ์ด์ƒ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋ณ€์ˆ˜ ํ™•์žฅ์œผ๋กœ # 160์œผ๋กœ ์ˆ˜์ • ๋  ์ˆ˜์žˆ๋Š” # 50์˜ ๋ฒ„๊ทธ๋กœ ์ธํ•ด ๋ฐœ์ƒํ–ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์—ด๋ ค ์žˆ์œผ๋ฉฐ shFlags์™€ ๊ด€๋ จ๋œ ํŠน์ • Mac OS X ์ „์šฉ ์œ„ํ—˜๊ณผ ๊ด€๋ จ๋œ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๋‚ด ํ’€ ์š”์ฒญ https://github.com/nvie/gitflow/pull/223 ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. 'git tag -F'์— ๋งคํ•‘๋˜๋Š” ์˜ต์…˜์„ ๊ตฌํ˜„ํ•˜์—ฌ ํŒŒ์ผ์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ์ฝ๊ณ  ๋Œ€ํ™” ํ˜• ํŽธ์ง‘๊ธฐ๋ฅผ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‚ด๊ฐ€์ด ํŒŒํ‹ฐ์— ๋Šฆ์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ, ์•„๋ž˜๋Š” ์œ„์™€ # 50์—์„œ ์„ค๋ช…ํ•œ ๋ฌธ์ œ์—†์ด OS X์— git-flow๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์™€ ๋™๋ฃŒ๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์ง€์นจ์ž…๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ๋‘ ๊ฐ€์ง€๋กœ ์š”์•ฝ๋ฉ๋‹ˆ๋‹ค.

  • # 160์—์„œ ์ฐธ์กฐ ๋œ ํŒจ์น˜๋ฅผ ๊ฐ€์ ธ ์˜ค๋ ค๋ฉด ์ตœ์‹  ๋ฒ„์ „์˜ git-flow๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.
  • gnu-getopt์™€ ํ•จ๊ป˜ ์ตœ์‹  ๋ฒ„์ „์˜ shflags (์‚ฌ์šฉ์ž ์ง€์ • getopt ์œ ํ‹ธ๋ฆฌํ‹ฐ ์ง€์›)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด ์ง€์นจ์€ Homebrew๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค๋ฅธ ์„ค์น˜ ๋Œ€์•ˆ์ด ํฌํ•จ ๋œ ๊ธด ๋ฌธ์„œ์—์„œ ๋ฐœ์ทŒ ํ•œ ๊ฒƒ์ด์ง€๋งŒ ์—ฌ๊ธฐ์— ์–ธ๊ธ‰ ๋œ ๋‚ด์šฉ์€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค์€ ๋ชจ๋‘ ๋ฒ„๊ทธ ๋˜๋Š” ํŠน์„ฑ์œผ๋กœ ์ธํ•ด ์–ด๋Š ์ •๋„์˜ ๋ฐ”์šด๋“œ๋ฅผ ํฌํ•จํ•˜๋ฉฐ, ๋” ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ถ๊ธˆํ•˜์‹  ๋ถ„๋“ค์„ ์œ„ํ•ด ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์ œ๊ณตํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. git-flow์˜ ์ƒˆ ๋ฆด๋ฆฌ์Šค๊ฐ€ Homebrew์— ์Šค๋ฉฐ ๋“ค๋ฉด์ด ๋ชจ๋“  ๊ฒƒ์ด ๋ถˆํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋ช…๋ น:

์ตœ์‹  shflags๋กœ ์ตœ์‹  git-flow๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

$ git clone git://github.com/nvie/gitflow.git
$ cd gitflow
$ git svn clone -r HEAD http://shflags.googlecode.com/svn/trunk/source/1.0 shFlags
$ sudo make install

git ์—†์ด๋„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ curl -L https://github.com/nvie/gitflow/tarball/develop | tar --exclude '*shFlags' -s '/nvie-\(gitflow\)-[a-z0-9]\{1,\}/\1/' -xvf -
$ cd gitflow
$ curl -L -o gitflow-shFlags http://shflags.googlecode.com/svn/trunk/source/1.0/src/shflags
$ sudo make install

gnu-getopt (Homebrew ํฌํ•จ)๋ฅผ ์„ค์น˜ํ•˜๊ณ ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก shflags๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

$ brew install gnu-getopt
$ echo 'export FLAGS_GETOPT_CMD="$(brew --prefix gnu-getopt)/bin/getopt"' >> ~/.bashrc

์ƒˆ ํ„ฐ๋ฏธ๋„ ์„ธ์…˜์„ ์‹œ์ž‘ํ•˜์—ฌ ๋กœ๊ทธ์ธ ์…ธ์ด FLAGS_GETOPT_CMD๋ฅผ ์„ ํƒํ–ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

$ echo $FLAGS_GETOPT_CMD

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์„ ๋ฐ˜ํ™˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. /usr/local/Cellar/gnu-getopt/1.1.4/bin/getopt

2017 ์ด๊ณ  ์ƒํ™ฉ์ด ๋ฐ”๋€Œ ์—ˆ์Šต๋‹ˆ๋‹ค.

http://shflags.googlecode.com/svn/trunk/source/1.0/src/shflags ์ด ์ด๋™ํ•˜์—ฌ 404๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
๋Œ€์‹  https://raw.githubusercontent.com/nvie/shFlags/master/src/shflags

์•„๋ž˜ ์—…๋ฐ์ดํŠธ ๋œ ์Šค ๋‹ˆํŽซ์„ ์‚ฌ์šฉํ•˜์—ฌ git-flow ๋กœ shFlags

$ curl -L https://github.com/nvie/gitflow/tarball/develop | tar --exclude '*shFlags' -s '/nvie-\(gitflow\)-[a-z0-9]\{1,\}/\1/' -xvf -
$ cd gitflow
$ curl -L -o gitflow-shFlags https://raw.githubusercontent.com/nvie/shFlags/master/src/shflags
$ sudo make install

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‚˜๋จธ์ง€ ์ง€์นจ์„ ๋”ฐ๋ฅด์‹ญ์‹œ์˜ค.

gnu-getopt (Homebrew ํฌํ•จ)๋ฅผ ์„ค์น˜ํ•˜๊ณ ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก shflags๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

$ brew install gnu-getopt
$ echo 'export FLAGS_GETOPT_CMD="$(brew --prefix gnu-getopt)/bin/getopt"' >> ~/.bashrc

์ƒˆ ํ„ฐ๋ฏธ๋„ ์„ธ์…˜์„ ์‹œ์ž‘ํ•˜์—ฌ ๋กœ๊ทธ์ธ ์…ธ์ด FLAGS_GETOPT_CMD๋ฅผ ์„ ํƒํ–ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

$ echo $FLAGS_GETOPT_CMD

/usr/local/Cellar/gnu-getopt/1.1.4/bin/getopt ์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

ํ•˜๋ ค๋Š” ์ž‘์—…์„ ๋‹ค์‹œ ์‹œ๋„ํ•˜์‹ญ์‹œ์˜ค.

์ด ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ–ˆ๋Š”๋ฐ ์—์ฝ”๊ฐ€ ์•„๋ฌด๊ฒƒ๋„ ํ‘œ์‹œํ•˜์ง€ ์•Š์œผ๋ฉด ์–ด๋–ป๊ฒŒ๋ฉ๋‹ˆ๊นŒ? ํ•˜์ง€๋งŒ .bashrc๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜๊ณ  ํ„ฐ๋ฏธ๋„์ด ๋‹ค์‹œ๋กœ๋“œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
MacBook-Pro-mac-2 : ~ loyi $ echo $ FLAGS_GETOPT_CMD

MacBook-Pro-mac-2 : ~ loyi $

@kahurangitama ๋Š” Zsh์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ์…ธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. http://zpalexander.com/switching-to-zsh/

์•ž์„œ ์–ธ๊ธ‰ ํ•œ ๋ช…๋ น์„ ๋‹ค์Œ ๋ช…๋ น์œผ๋กœ ๋ฐ”๊ฟ”์•ผํ–ˆ์Šต๋‹ˆ๋‹ค.
echo 'export FLAGS_GETOPT_CMD="$(brew --prefix gnu-getopt)/bin/getopt"' >> ~/.zshrc ( ~/.bashrc ๋Œ€์‹ )

ํ•ด๊ฒฐ์„์œ„ํ•œ ๋‚˜์˜ ํ•ด๊ฒฐ์ฑ….

git-flow-avh ์•„๋‹ˆ๋ผ git-flow ์ด๋ฏธ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๊ฒƒ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜๋™์œผ๋กœ ๋‹ค์Œ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

brew install git-flow-avh
brew link git-flow-avh -f

git-flow-avh ์—์„œ๋Š” ๋” ์ด์ƒ FLAGS_GETOPT_CMD ๋ฅผ ์„ค์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜ : 4 ๊ฐœ์˜ ํŒจํ‚ค์ง€๊ฐ€ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค ... ๋“ฑ ...

@heymartinadams๊ฐ€ ZSH ์…ธ์—์„œ ๋งํ–ˆ๋“ฏ์ด ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. .zsh ์„ค์ •์„ ๊ณ„์† ์„ค์ •ํ•˜๋ฉด .zshrc ๋ฅผ ํ„ฐ์น˜ ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

.bashrc

source ~/.profile

.zshrc

[[ -e ~/.profile ]] && emulate sh -c 'source ~/.profile'

์ด ์ฃผ์ œ๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰