14

私はgitを呼び出してトップレベルのディレクトリを取得します( Is there a way to get the git root directory in one command?に従って )。

(let ((tmpbuffer (get-buffer-create (make-temp-name "git"))))
  (call-process "git" nil tmpbuffer nil "rev-parse" "--show-toplevel")
  (with-current-buffer tmpbuffer
    (with-output-to-string
      (princ (buffer-string))
      (kill-buffer))))

ただし、返される文字列には末尾の改行があります。私はそれを取り除く方法がわかりません。

4

4 に答える 4

16

私はあなたができると思います

(replace-regexp-in-string "\n$" "" 
              (shell-command-to-string "git rev-parse --show-toplevel"))
于 2012-12-28T20:33:20.320 に答える
9

出力の最後にある改行のみを削除する場合は、次を使用します

(replace-regexp-in-string "\n\\'" "" 
  (shell-command-to-string "git rev-parse --show-toplevel"))

また、受け入れられた回答"\n\n"は、出力内の改行のペア ( ) を単一の改行 ( "\n")に置き換えます。これ$は、文字列の最後または改行の後に\\'一致し、文字列の最後でのみ一致するためです。

于 2015-04-21T15:54:40.497 に答える