我結束了使用bash腳本,看起來像一個非常圓房子的方法。我相信有人可以提供更好的答案,但作爲解決方法。
以下函數獲取需要添加的文件列表,並將它們添加到Source Safe中相應的目錄中。如果文件存在於sourcesafe中尚不存在的目錄中,則該目錄會自動添加。
用法示例(而在項目的根目錄):
SSAddEachNewFile file1.txt file2.txt folder1/file3.txt folder1/morefolder/file4.txt
會FILE1.TXT FILE2.TXT文件夾1/file3.txt文件夾1/morefolder/file4.txt添加到
$ /項目/電流/ myproject的/ FILE1.TXT
$ /項目/電流/ myproject的/ FILE2.TXT
$ /項目/電流/ myproject的/文件夾1/file3.txt
$ /項目/電流/ myproject的/文件夾1/morefolder /文件4 .txt
個
Bash函數:
SSAddEachNewFile()
{
printf "\n\nAdding files requires us to loop, so we can add to the correct directory"
for file in $1; do
printf "\n--Resetting Dir---\n"
cd %CURRENT_PROJECT_WORKING_DIR
quietsset
printf " ----\n\n"
new_file=$(echo ${file##*/})
directory=$(echo ${file%/*})
#cp to folder
echo "Directory is: $directory"
quietsset
test=$(ss CP $directory 2>&1 | grep -c 'exist' 2>&1)
if (("1"== $test));
then
echo "Did not to find directory! It does not exist!....yet :)";
new_directory=$directory;
last_directory=$directory;
while (("1"== $test));
do
echo "->This parent directory does not exist, try going up";
echo "---trying to cp to $new_directory"
last_directory=$(echo ${new_directory})
new_directory=$(echo ${new_directory%/*})
quietsset
test=$(ss CP $new_directory 2>&1 | grep -c 'exist' 2>&1)
echo "[+]"
done
echo "Directory does not exit, need to add $last_directory";
ss Add $last_directory -R -C"$SS_COMMENT" -Y$SSNAME
else
echo "Directory already exists, need to add file: ${file}";
ss Add $file -C"$SS_COMMENT" -Y$SSNAME
fi
done
}
它需要一個額外的功能和2個環境變量
quietsset()
{
ss CP $CURRENT_SOURCE_SAFE_PROJECT -O-
}
其中$ CURRENT_SOURCE_SAFE_PROJECT是您的SS根和$%CURRENT_PROJECT_WORKING_DIR是你的工作目錄的根。
例如如果你有project/current/myproject並且你簽出了「myproject」文件夾結構。然後你
CURRENT_SOURCE_SAFE_PROJECT = $ /項目/電流/ myproject的 和 CURRENT_PROJECT_WORKING_DIR = C /哪裏/你/把/ myproject的