作者 主題: [git] 在 bashrc 自動忽略編譯後的 elf 檔  (閱讀 1027 次)

0 會員 與 1 訪客 正在閱讀本文。

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
之前有在 ~/.bashrc 顯示分支, 參考這個

http://phorum.study-area.org/index.php/topic,71755.0.html

今天加了一些功能, 在 git add . 之後能自動過瀘掉編譯後的 elf 檔
修改 parseGitBranch()

代碼: [選擇]
parseGitBranch() {
  BNAME1=$(git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\[\1\]/')
  BNAME2=$(git branch 2>&1 | sed -n -e '1 s/^\(fatal\: Not a git repository\).*/\1/p')
  # BNAME2 == "" is git && no branch
  if [ ! -z "$BNAME1" -a -z "$BNAME2" ]; then
    echo $BNAME1
  elif [ -z "$BNAME1" -a ! -z "$BNAME2" ]; then
    # Not a git repository
    echo ""
  else
    # 未曾 commit 沒有 master
    echo "[*]"
  fi
 
  # 新增開始
  LATEST_GIT_CMD="$(history|tail -n2|grep 'git ad[d]')"
  if [ ! -z "$LATEST_GIT_CMD" ]; then
    for tf in $(git status|grep "new file"|awk -F':' '{print $2}'|sed 's/^[ \t]*//')
    do
      if [ ! -z "$(file "$tf"|grep 'ELF')" ]; then
        echo "$tf" >> "$(git rev-parse --show-toplevel)/.gitignore"
        GIT_RM=$(git rm --cached "$tf")
      fi
    done
  fi
}

1. 先判斷上個指令是否為 git add
2. 用 git status 抓出新加入的檔名
3. 用 file 指令檢查是否為 ELF 檔
4. rm elf 檔並將檔名加入 .gitignore