2008-10-01 95 views
8

我一直在使用這種長的命令:如何在svn中添加所有未跟蹤的文件?像git add -i?

svn st | awk '/\?/ {print $2}' | xargs svn add 

同樣,使用svn RM文件我不小心刪除正常RM連同:

svn st | awk '/\!/ {print $2}' | xargs svn rm --force 

我想我可以寫一個bash函數做這些兩個,但我更喜歡交互式添加/ rm像一個git。

+0

請注意,您的一個內襯打破未跟蹤文件的名稱中的空格 – freespace 2011-05-18 07:20:52

+4

使用`svn st | grep'^?' | sed's/^ [?] * /「/'| sed's/$ /」/'| xargs svn add`代替它不會受到空白問題的影響 – freespace 2011-05-18 08:16:47

回答

6

我使用您運行的命令行的一般化,稱爲svnapply.sh。我沒有寫,但我不記得我在哪裏找到它。希望原作者原諒我在這裏重新張貼它:

#!/bin/bash 
# 
# Applies arbitrary commands to any svn status. e.g. 
# 
# Delete all non-svn files (escape the ? from the shell): 
# svnapply \? rm 
# 
# List all conflicted files: 
# svnapply C ls -l 

APPLY=$1 
shift 

svn st | egrep "^\\${APPLY}[ ]+" | \ 
sed -e "s|^\\${APPLY}[ ]*||" | \ 
sed -e "s|\\\\|/|g" | \ 
xargs -i "[email protected]" '{}' 

%的意見,該腳本可以讓你用相同的運行狀態對所有文件任意命令。

更新:

它不會太難寫一個腳本,需要一個文件路徑作爲參數,並提示用戶添加/刪除,然後做適當的事情該文件。與上面的腳本一起鏈接會得到你想要的。

0

使用GUI可以顯示所有未跟蹤文件,然後選擇全部並添加。任何像樣的SVN gui都應該提供這個功能。

這就是說,小心你真的想要所有這些文件。

0

TortoiseSVN可以在提交和顯示更改對話框中顯示未版本控制的文件。您可以右鍵單擊文件以「添加」或將其標記爲已忽略。

如果您使用Visual Studio: AnkhSVN的最新穩定版本有類似的命令,但在大多數情況下它只顯示您應該添加的文件。 (該項目提供的文件列表版本的SCC提供商;其它文件被自動忽略)

+2

如果您在TortoiseSVN提交對話框中,則可以更加懶惰。當您提交時,TortoiseSVN會自動添加您在對話框中選中的任何非版本化文件。 – 2009-01-06 12:44:17

7

還有一個更簡單的線條......

svn add `svn status | grep ?` 

,那麼你可以將它設置爲一個別名〜 /.bashrc如

alias svn-addi='svn add `svn status | grep ?`' 
+2

這不起作用 – 2013-07-18 08:31:24

5

這增加了所有SVN-未跟蹤和-unversioned文件在當前目錄下,通過所有子目錄遞歸:

svn add --force ./* 

對我的作品中的MacOS 10.6+和Ubuntu 10+,與SVN 1.6+。這不提供任何每個文件,用戶交互性;我不知道該怎麼做。

這也會添加svn忽略的文件,好或壞。