2011-10-11 70 views
2

嗯,我想知道如果我能从颠覆中获得最新的标签,将其增加并在一个命令中创建新标签?目前我得到的最新标签是这样的:来自命令行的SVN标签版本号增量

svn ls http://svn/path/to/tags | tail -n 1 

,给了我这样的事情:

1.2.34/ 

那么我将创建的1.2.35版本号的新标签,因为我已经递增版本号如下:

svn copy http://svn/path/to/trunk http://svn/path/to/tags/1.2.35 

从这里我只是做一个开关,指向生产代码到最新的标签。

我知道我可以写一个脚本来照顾这个,但我想知道我是否可以通过一个命令(命令链接)从命令行执行此操作。如果我卡住了,我如何将标签名称增加到下一个版本号码(例如,从1.2.34到1.2.35)?版本号范围应该遵循x.[0-99].[0-99]。任何想法,帮助将是伟大的。

相关:

+0

I想不到在单一命令行中做到这一点的方法,但我会想象如果可能的话,它会很长并且令人费解,你可能会犯错而不是简单地写一个小外壳脚本。我担心你的命令是否真的拉高了最后的版本。例如,如果你有'1.12.2'和'1.9.4',你的命令会认为'1.9.4'晚于'1.12.2',事实并非如此。 –

+0

为什么你需要一个单线?这绝对是一个脚本,我会在Perl中实现它(全部包括svn副本,并且可能会添加更多功能,例如检查标记)。 – pmod

+0

我只需手动完成它 - 除非每5分钟进行一次版本控制,否则这不是一项艰巨的任务。 – Deleted

回答

2

“一首班车”,以获得下一个标签将是这样的:

svn ls http://svn/path/to/tags | \ 
    sort -t '.' -k 1,1n -k 2,2n -k 3,3n | \ 
    tail -1|sed 's:/$::' | \ 
    awk 'BEGIN{FS="."}{print $1 "." $2 "." $3+1}' 

...但你应该写一个脚本,以便你可以测试它。 (是的,我知道排序和tail,sed和awk可能都会在它自己的重量下崩溃到perl的位,但你需要在那里的所有那些“部分”。)

+0

真正的管道在这里掌握! –

1

喜欢的东西

svn copy http://svn/path/to/trunk http://svn/path/to/tags/`svn ls http://svn/path/to/tags | some-script-for-getting number`