2015-12-18 110 views
1

我想下載我的git repo unsing tcl。 我用這個PROCtcl:執行git命令

proc download_git_repo {} { 
    global git_rev git_path 
    exec git clone https://github.com/bitcoin/bitcoin.git $git_path/bit_git 
} 

,但我無法找到該目錄bit_git,似乎在命令執行不會正常工作與混帳!

我用於其他COMAND它的高管工作正常

我怎麼能在外殼excecute git的命令與TCL

+1

$ git_path設置是否正確?你如何輸入用戶名和密碼? – Feroc

+0

我想'git_path'變量在它的值中有空格,或者它不是絕對的,你的腳本恰好有一個與你在腳本運行時期望的不同的工作目錄(或者它在調用之前的某處調用'cd' 'download_git_repo')。確保在調用腳本(Git可以看到它)之前將'GIT_TRACE'環境變量設置爲'1'並*導出*並查看克隆時將打印出的Git。 – kostix

+0

考慮閱讀[this](http://wiki.tcl.tk/exec)並注意那裏介紹的各種方法,以便將不同的參數正確地分隔到'exec'。 – kostix

回答

1

最可能的選擇是,你,你以爲你是目錄不是。當你編寫腳本時,很容易出錯;例如,從GUI直接調用的程序傾向於運行在與您所期望的完全不同的位置。

我建議寫你即將進入git clone到一個變量的值,然後記錄在某處:

proc download_git_repo {} { 
    global git_rev git_path 
    set theLocation $git_path/bit_git 
    puts "working dir: [pwd]\nlocation: $the_location" 
    # Use this instead if inside a Tk script: 
    # tk_messageBox -message "working dir: [pwd]\nlocation: $the_location" 
    exec git clone https://github.com/bitcoin/bitcoin.git $the_location 
} 

這樣,你可以清楚地看到你真正給人以飯桶。我建議確保它是絕對路徑;那些不要的驚喜。

儘管Tcl非常小心地正確處理文件名空間之類的東西(除非你是eval;不要這麼做),但其他工具並不總是如此小心。