我如何忽略SVN的目錄?



10 Answers

這是一個示例目錄結構:

\project
    \source
    \cache
    \other

project時,您會看到您的緩存目錄未添加並顯示。

> svn st
M  source
?  cache

要設置忽略屬性,請執行

svn propset svn:忽略緩存。

其中svn:ignore是您設置的屬性的名稱, cache是屬性的值,而. 是您設置此屬性的目錄。 它應該是需要該屬性的cache目錄的父目錄。

要檢查設置了哪些屬性:

> svn proplist
Properties on '.':
  svn:ignore

要查看svn:ignore的值svn:ignore

> svn propget svn:ignore
cache

刪除以前設置的屬性:

svn propdel svn:ignore
Question

我剛開始使用SVN,我有一個緩存目錄,我不需要在源代碼控制下。 我如何忽略SVN的整個目錄/文件夾?

我在OS X和命令行上使用VersionsTextMate




由於我花了一段時間試圖讓它起作用,應該注意的是,如果文件已經存在於SVN中,則需要svn delete它們,然後編輯svn:ignore屬性。

我知道這似乎很明顯,但他們一直顯示為? 在我的svn status列表中,當我以為它會在本地忽略它們。




如果您使用特定的SVN客戶端TortoiseSVN ,則在提交時,您可以選擇右鍵單擊項目並選擇“添加到忽略列表”。




Eclipse解決下一個問題:

首先,將文件夾同步到項目中:

團隊 - >同步

在下一個視圖(團隊視圖)中,您可以看到您可以提交給SVN服務器的所有資源。

因此,選擇您要忽略的資源的資源文件夾,然後可以使用忽略它

團隊 - >添加到svn:ignore

之後,在確認窗口中,請選擇第一個選項:“按名稱忽略”。

例如,如果我想忽略目標文件夾及其.class資源,我會同步,並在同步視圖中選擇目標文件夾。 之後,我會選擇

team->添加

svn:ignore ,然後我會確認確認窗口中的第一個選項。




“謝謝你” svn這樣一個可怕的,虛假的和難以忽視的文件。

所以我寫了一個腳本svn-ignore-all

#!/bin/sh

# svn-ignore-all

# usage: 
#   1. run svn status to see what is going on at each step 
#   2. add or commit all files that you DO want to have in svn
#   3. remove any random files that you don't want to svn:ignore
#   4. run this script to svn:ignore everything marked '?' in output of `svn status`

svn status |
grep '^?' |
sed 's/^? *//' |
while read f; do
    d=`dirname "$f"`
    b=`basename "$f"`
    ignore=`svn propget svn:ignore "$d"`
    if [ -n "$ignore" ]; then
        ignore="$ignore
"
    fi
    ignore="$ignore$b"
    svn propset svn:ignore "$ignore" "$d"
done

另外,要忽略特定的文件/路徑名列表,我們可以使用這個變種svn-ignore 。 我猜svn-ignore-all應該像xargs svn-ignore一樣。

#!/bin/sh

# svn-ignore

# usage:
#   svn-ignore file/to/ignore ...

for f; do
    d=`dirname "$f"`
    b=`basename "$f"`
    ignore=`svn propget svn:ignore "$d"`
    if [ -n "$ignore" ]; then
        ignore="$ignore
"
    fi
    ignore="$ignore$b"
    svn propset svn:ignore "$ignore" "$d"
done

還有一件事:我傾向於用許多隨機文件污染我的svn結賬。 當需要提交的時候,我將這些文件移動到一個“舊”子目錄中,並告訴svn忽略“舊”。




先刪除它...

如果您的目錄foo已經受版本控制,請先使用以下命令將其刪除:

svn rm --keep-local foo

...然後忽略:

svn propset svn:ignore foo .



如果您使用像TortoiseSVN這樣的SVN前端,或者某種IDE集成,那麼在同一個菜單中也應該有一個忽略選項,即提交/添加操作。




在父目錄上設置svn:ignore屬性:

$ cd parentdir
$ svn ps svn:ignore . 'cachedir'

這將覆蓋svn:ignore當前值。 你用下面的值編輯值:

$ svn pe svn:ignore .

這將打開你的編輯器。 您可以添加多個模式,每行一個。

您可以通過以下方式查看當前值:

$ svn pg svn:ignore .

如果您使用GUI,應該有一個菜單選項來執行此操作。




如果您的項目目錄名為/ Project,並且您的緩存目錄名為/ Project / Cache,那麼您需要在/ Project上設置一個subversion屬性。 屬性名稱應該是“svn:ignore”,屬性值應該是“Cache”。

有關屬性的更多信息,請參閱Subversion手冊中的this頁面。




既然你使用的是版本,那其實很簡單:

  • 瀏覽您的簽出副本
  • 點擊要忽略的目錄
  • 在“忽略”框中右鍵單擊“編輯”
  • 鍵入*。*忽略所有文件(或者* .jpg僅用於JPG文件等)



我有問題讓嵌套的目錄被忽略; 我想忽略的頂層目錄不會顯示'svn status',但所有的子目錄都會顯示。 這對其他人來說可能是不言而喻的,但我想我會分享它:

例:

/樹幹

/主幹/緩存

/主幹/緩存/ subdir1

/主幹/緩存/ subdir2

cd /trunk
svn ps svn:ignore . /cache
cd /trunk/cache
svn ps svn:ignore . *
svn ci



Related