我在家里开发Windows并将我的更改发送给客户。客户不希望安装任何SCM,因此我需要发送我从上次迭代中更改的文件。 目前我正在使用Subversion通过自编的批处理实现某种自动化,这是Windows和GNU / unix实用程序的混合。该脚本查看给定的修订,列出更改的文件,删除重复并最后获取列表文件。
@echo off
if (%3) == () goto usage
set TO_REVISION=HEAD
set PUSHNAME=%3-%1
svn log -v -q -r %2 %3 | sed "s/^[ ^t]*[AM] \/[[:alnum:]_]*\/[[:alnum:]_]*\/\(.*\.[[:alnum:]_]*\)/tar --append --file=%PUSHNAME%.tar \1/" | sed "s/ (.*//g" | sort | uniq | grep -v "config.xml" >> %PUSHNAME%.bat
IF ERRORLEVEL 1 goto error
echo bzip2 %PUSHNAME%.tar>> %PUSHNAME%.bat
echo :: SVN REVISIONS :: %2>> %PUSHNAME%.bat
echo ... %PUSHNAME%.bat generated.
goto done
:usage
echo USAGE: %~nx0 push-file-name from[:to]-revision relative-or-absolute-path
echo See svn log -v -q -r [REV] to view repository log.
goto done
:error
echo ERROR! Check (if exists) output file %PUSHNAME%.bat
goto done
:done
批次并不完美,但对我来说还可以。 现在我决定搬到Git。我已经将subversion存储库转换为Git存储库。但显示塞子对我来说,我无法在Git手册中找到svn -v -q -r log的替换命令:-( 我确信它应该是,但经过一天的搜索,我想询问更有经验的Git-Gurus的帮助。
提前感谢您为我的问题花费的时间,
奥列格
答案 0 :(得分:1)
我猜你试图获得自提交以来改变的文件列表:
git diff-index <commit> --name-only
将列出自&lt; commit&gt;以来更改的所有文件而且只有他们的名字。
--name-only
可以省去sed'ing文件名的麻烦。
使用--name-status
会让您更熟悉
A debian/control
M debian/rules
输出
答案 1 :(得分:0)
git show HEAD HEAD^
这将显示当前分支的最后两次提交。有关更多选项,请参阅git show --help