2011-10-11 77 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`