1. ホーム
  2. git

git update-index --chmod=+x "を実行ファイルに自動で適用する

2023-09-08 04:43:40

質問

Git リポジトリに頻繁に bash スクリプトを追加するのですが、そのスクリプトは Linux ファイルシステム上で実行可能なパーミッションが git add . しかし、追加したファイルをリモート リポジトリにプッシュし、別の場所でプルした後、ファイルが実行不可能なパーミッションで表示されます。この問題を修正する方法は 2 つあるように思われます。

  1. chmod u+x $script 
    git commit -am "fixing the script permissions... again..."
    
    
  2. git update-index --chmod=+x $script
    
    

毎回パーミッションを修正する代わりに、Gitがスクリプトのファイルパーミッションを単純に見る方法はありますか? git add の間にスクリプトのファイルパーミッションを見て、"これは実行可能ファイルだ!"と認識し、実行可能なパーミッションで直接リポジトリに追加する方法はありますか?

どのように解決するのですか?

いくつかの方法があります。

  1. Gitのエイリアス
  2. Bash のエイリアス
  3. bash と git のエイリアスを組み合わせることもできます。
  1. Git エイリアス

    gitのエイリアスでは常にbashを使用することができます。

    • gitの設定を開いてください。

      vim ~/.gitconfig

    • aliasesセクションを追加します(存在しない場合)。

      [alias]
          addscr = !sh -c 'if [[ ${0: -3} == ".sh" ]]; then git update-index --chmod=+x $0; git add $0'
      
      
  2. Bashのエイリアス

    • bashのプロファイルファイルを編集します。

      vim ~/.bashrc

    • ファイルの末尾に追加します。

      function gitadd(){
          if [[ ${1: -3} == ".sh" ]]
              then git update-index --chmod=+x $1
          fi
          git add $1
       }
       alias gitadd='gitadd'
      
      
  3. gitとbashのエイリアスを結合する

    • bashのプロファイルファイルを編集します。

      vim ~/.bashrc

    • ファイルの末尾に追加します。

      function checkShellFile(){
          return ${1: -3} == ".sh"
      }
      alias gitadd='checkShellFile ? git addsrcipt "$1" : && git add "$1"'
      
      
    • gitの設定ファイルを編集します。

      vim ~/.gitconfig

    • aliasesセクションを追加します(存在しない場合)。

      [alias]
          addscript = !sh -c 'git update-index --chmod=+x $0 && git add $0'
      
      

いずれも未検証