签出要上载到FTP的Subversion上次更改


Checkout Subversion last changes to upload to FTP

如果我对五个不同的文件进行了小的更改,并将它们提交给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以根据需要获取最新文件。