2012-10-25 45 views
1

我從Github拉到我們網站的網絡服務器。所有操作都是通過bash腳本和scalr完成的。在我們的網站中,其中一個文件夾是NFS安裝到S3文件夾。有沒有一種方法可以在不殺死該文件夾並重新安裝的情況下進行拉動? 這是我當前的腳本:git github發佈到網站,但不要擦除文件夾?

## Git Clone ------------------------------------------------------------------- 

if [ -d "$DEPLOY_PATH"/.git ]; then 
    cd "$DEPLOY_PATH" 
    if $GIT_PATH status >/dev/null 2>&1; then 
     $GIT_PATH pull 
     exit 0 
    fi 
fi 

$GIT_PATH clone $GIT_REPO_URL $GIT_CL_DIR . 

## Git Checkout ---------------------------------------------------------------- 
# There should be *no* changes to the pristine repo. 
echo "Ensure pristine copy. Executing 'git reset --hard'." 
$GIT_PATH reset --hard HEAD 2>/dev/null 

echo "Pulling updates from $GIT_REMOTE" 
$GIT_PATH fetch $GIT_REMOTE 

current_branch=$($GIT_PATH branch | awk '/\* /{print $2}') 

if [[ "$current_branch" = "$GIT_BRANCH" ]] then 
    echo "Already on branch '$GIT_BRANCH'." 
elif ! $GIT_PATH branch | awk "/$GIT_BRANCH$/" >/dev/null 2>&1 then 
    echo "Checkout of branch '$GIT_BRANCH'" 
    $GIT_PATH checkout -b $GIT_BRANCH --track $GIT_REMOTE/$GIT_BRANCH 2>/dev/null 

elif ! $GIT_PATH checkout $GIT_BRANCH 2>/dev/null then 
    echo "Branch '$GIT_REMOTE/$GIT_BRANCH' not found. Skipping remainder of update." 1>&2 
    exit 1 
fi 

# Run our git commands 
$GIT_PATH pull 

## Get submodules, if exist. 
if [ -e ".gitmodules" ] 
then 
    echo "Updating submodules." 
    $GIT_PATH submodule init 2>/dev/null 
    $GIT_PATH submodule update 
fi 

然後我做的文件夾和這樣的....

+3

你能上,爲什麼你需要卸載的闡述目前能夠拉動的文件夾?即我沒有看到兩者之間的直接關係。另外,你的腳本有哪些錯誤? – favoretti

+0

腳本沒有錯誤,只是把它作爲我正在做的事情的參考。 我需要安裝的文件夾是上傳的網站內的文件夾。由於我不希望這些上傳受Git版本的影響,因此我需要找到一種方法來保持git不會覆蓋這些文件。 –

回答

1

一種方式的安裝將是符號鏈接到安裝目錄。
即使是符號鏈接駐留了Git的工作棵樹,它不會被Git的影響,因爲它不遵循符號鏈接(如「Getting git to follow symlinks (again)」詳細介紹)

+0

謝謝!我認爲這更多的是我正在尋找的東西。 –