Git 관리하는 dotfiles의 추천 - 자신의 개발 환경을 가지고 다니자 -



목표



엔지니어인 것, 자신에게 최적의 개발 환경을 구축하는 것은
서비스 개발 속도를 크게 좌우하는 하나의 큰 요소라고 생각하고 있습니다.

shell은 zsh, iTerm2를 넣고 테마는 iceberg에서, 한층 더 모든 CLI를 인스톨 한다…등.
굉장히 즐거운 작업이기도 하지만, 좀처럼 시간을 사용해 버리는 작업이기도 합니다.
또 새로 사용 PC를 받거나 하면, 자신의 PC의 환경을 재현하려고 하면 이것도 또 수고가 걸린다.

라고 지금까지 생각하고 있던 분에게는, 분명 좋은 깨달음의 기사가 되는 것은 아닐까 생각합니다!

필자의 리포지토리



issy-s16/dotfiles
↑의 리포지토리는 git clone 하고 README의 커멘드를 치는 것만으로,
Mac/CentOS/Fedora/RedHat등의 환경에 맞추어, 환경 구축을 가볍게 실시해 줍니다!

동그라미를 써도 좋고, 포크를 해도 괜찮습니다.

dotfiles란?



흔히 무엇인가의 설정 파일을 가리킵니다.
(.bashrc/.vimrc/.gitconfig) 같은 것.

또한 예를 들어 iTerm2와 같은 GUI 도구의 환경 설정 파일을 포함합니다.
※대부분의 설정 파일이 머리에.가 붙는 것으로부터, 이렇게 불리고 있습니다.

이번에는 이들 설정 파일을 Git 관리하고, git clone 하면 환경 구축을 할 수 있는 상태로 해 나갑니다.

자신의 dotfiles를 만들어 보자.



쉽게 시작



dotfiles에 대해서는, 우선 설정 파일을 Git 관리하는 것만으로도 매우 편리하게 됩니다!
우선, 빨리 시작하는 방법을 설명합니다.

리포지토리 만들기


  • mkdir ~/dotfiles
  • cd ~/dotfiles && git init
  • git commit -m 'initial commit' && git push

  • 구성 파일을 dotfiles 아래로 마이그레이션



    예: .bashrc
    1. mv ~/.bashrc ~/dotfiles2. ln -s ~/dotfiles/.bashrc ~/.bashrc
    ※순서 2의 ln명령으로 dotfiles하하의 .bashrc를 심볼릭 링크 해,
    ~/.bashrc를 참조 할 때 dotfiles 아래의 .bashrc를 참조하려고합니다.
    링크해 두면 뭔가 수정을 했을 때 Git 반영된다는 장점이 있습니다. 중앙 관리!

    또한 README.md를 만들어 이러한 단계를 기록해 두는 것이 좋습니다!

    일단 설정이 마이그레이션이 끝나면, 잊지 않고 git push


  • git push

  • 탄탄하게 구축하다



    이쪽은 확실히 구축편.
    '쉽게 시작하기' 측에서는 단지 Git 관리만 했지만,
    여기에서는 설정 파일의 배치, 다른 소프트웨어 인스톨까지 자동화하겠습니다!

    setup.sh 만들기


  • vim ~/dotfiles/setup.sh
  • echo "DOTFILES SETUP START!"
    
    for f in .??*; do
        [ "$f" = ".git" ] && continue
        ln -snfv ~/dotfiles/"$f" ~/
    done
    
    echo "DOTFILES SETUP FINISHED! bye."
    

    ※상기의 쉘에서는, 홈 디렉토리 부하에 clone한 dotfiles 리포지토리 부하의 설정 파일을
    모두 홈 디렉토리 부하에 심볼릭 링크 하는 Shell입니다. 이것만으로 매우 편리.

    도구 시스템도 설치해 봅니다.


    echo "run brew doctor..."
    which brew >/dev/null 2>&1 && brew doctor
    
    echo "run brew update..."
    which brew >/dev/null 2>&1 && brew update
    
    echo "ok. run brew upgrade..."
    
    brew upgrade
    
    formulas=(
    wget
    curl
    tree
    openssl
    z
    colordiff
    peco
    hub
    tig
    )
    
    echo "start brew install apps..."
    for formula in "${formulas[@]}"; do
        echo "---------------------------"
        echo "installing ${formula}"
        echo "---------------------------"
        brew install $formula || brew upgrade $formula
        echo ""
    done
    
    brew cleanup
    

    OS에 맞추어 처리를 나누어 본다


    setup_mac() {
        if [ "$(uname)" == 'Darwin' ]; then
            # Mac
            echo "Setup for Mac"
            # 何かしらの処理
        fi
    }
    
    setup_debian() {
        if   [ -e /etc/debian_version ] || [ -e /etc/debian_release ]; then
            # Check Ubuntu or Debian
            if [ -e /etc/lsb-release ]; then
                # Ubuntu
                echo "Setup for Ubuntu"
                # 何かしらの処理
            else
                # Debian
                echo "Setup for Debian"
                # 何かしらの処理
            fi
        fi
    }
    
    setup_redhat() {
        if [ -e /etc/fedora-release ]; then
            # Fedra
            echo "Setup for Fedora"
            # 何かしらの処理
        elif [ -e /etc/redhat-release ]; then
            if [ -e /etc/oracle-release ]; then
                # Oracle Linux
                echo "Setup for Oracle Linux"
                # 何かしらの処理
            else
                # Red Hat Enterprise Linux
                echo "Setup for Red Hat Enterprise Linux"
                            # 何かしらの処理
            fi
        fi
    }
    
    setup_arch() {
        if [ -e /etc/arch-release ]; then
            # Arch Linux
            echo "Setup for Arch Linux"
            # 何かしらの処理
        fi
    }
    
    setup_suse() {
        if [ -e /etc/os-release -o -e /etc/SuSE-release ]; then
            # OpenSUSE
            echo "Setup for OpenSUSE"
            # 何かしらの処理
        fi
    }
    
    setup_mandriva() {
        if [ -e /etc/mandriva-release ]; then
            # Mandriva Linux
            echo "Setup for Mandriva Linux"
            # 何かしらの処理
        fi
    }
    
    setup_gentoo() {
        if [ -e /etc/gentoo-release ]; then
            # Gentoo Linux
            echo "Setup for Gentoo Linux"
            # 何かしらの処理
        fi
    }
    
    setup() {
        setup_mac
        setup_debian
        setup_redhat
        setup_arch
        setup_arch
        setup_suse
        setup_mandriva
        setup_gentoo
    }
    
    setup
    

    템플릿 틱에 소개하겠습니다만,
    실제로 움직이고 있는 것을 보고 싶은 분은 필자의 저장소 를 봐 주세요!

    마지막으로



    기사 쓰기에 있어서,
    그 밖에도 여러가지 방식으로 환경 구축을 해킹되고 있는 분이 계시고, 대단히 공부가 되었습니다.
    여러분의 리포지토리나 기사를 보는 것으로, 나 자신 더 해킹해 가고 싶습니다!

    읽어 주셔서 감사합니다!

    좋은 웹페이지 즐겨찾기