Checkout Subversion最后一次更改以上传到FTP

时间:2012-03-06 04:48:29

标签: php svn svn-checkout

如果我做了一些小改动,让我们说五个不同的文件,并将这些文件提交给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

它检出完整的主干并提取在给定修订范围内更改的文件。

2 个答案:

答案 0 :(得分:0)

如果您完全控制了服务器,则可以svn checkout目标服务器上的特定repo路径,然后运行svn update以根据需要获取最新文件。

答案 1 :(得分:0)

在现有工作副本的根目录

svn diff --summarize -rN:M

并使用第二列