如果我对五个不同的文件进行了小的更改,并将它们提交给Subversion,我如何才能在原始文件夹结构中准确地签出这些文件,以便稍后在FTP服务器上上传和覆盖?
如果我尝试检查HEAD非递归,我只会得到index.php和一些不同的文件,它们与上次的更改没有任何共同之处。
附加解决方案:我做了一个小剧本——不是很优雅,但它很管用。。。
#!/bin/bash
URL='http://svn ...';
TARGET='./ftp';
read -p "Please enter start revision: " VERSION1
read -p "Please enter ending revision: " VERSION2
read -p "Remove old? [yes] " remove
# getting changes
svn diff $URL --summarize -r$VERSION1:$VERSION2 > changes
# checkout complete revision
svn checkout $URL -r HEAD
# remove previous
if [ $remove = 'yes'] ; then
if [ -d $TARGET ] ; then
rm -r $TARGET
else
mkdir $TARGET
fi
fi
for entry in `cat changes`; do
e=${entry#*$URL/}
item=$TARGET'/'$e;
DIR=${item%/*}
# create directory
if [ -d $DIR ] ; then
echo '';
else
mkdir -p $DIR
fi
cp './trunk/'$e $DIR
echo $e
done
echo "Done ..."
read any
它检查出完整的主干,并提取在给定的修订范围内更改的文件。
在现有工作副本的根目录中
svn diff --summarize -rN:M
并使用第二列
如果您可以完全控制服务器,则可以svn checkout
目标服务器上的特定回购路径,然后运行svn update
以根据需要获取最新文件。