Как заставить TFS автоматически удалять более старые версии файлов? - PullRequest
2 голосов
/ 16 февраля 2012

У меня есть Team Foundation Server, на котором ограничено дисковое пространство. Чтобы сохранить его, мне нужно удалить старые версии файлов, которые он хранит.

В идеале я бы хотел удалить версию, только если:

  1. Это старше определенной даты, а
  2. Минимум 15 версий

Как мне это сделать?

Ответы [ 2 ]

4 голосов
/ 16 февраля 2012

Нет стандартного способа сделать это, и есть причина для этого.TFS обычно пытается сохранить только базовый файл и различия между ними, поэтому, если вы начнете удалять старые ревизии, вы не получите много.Максимальный размер diff этих двух версий.

Обновление дискового пространства вашего TFS-сервера, безусловно, является долгосрочным решением.

Если вам необходимо уменьшить размер ваших проектов,рассмотрите возможность уничтожения старых веток, которые больше не нужны. Вы можете уничтожить целые файлы и папки, которые будут удалять их, и связанную с ними историю из TFS .По умолчанию вы можете получить доступ к этой функции только через командную строку, и вам нужно иметь разрешение на уничтожение элементов в TFS. Существует расширение для Source Control Explorer, которое добавляет команду Destroy в контекстное меню в Visual Studio .

Если вы запускаете автоматические тесты с сервера Team Build, то тестируйте вложениятакже может быть причиной того, что ваш сервер TFS вырастет из своего выделенного пространства. Microsoft выпустила утилиту командной строки для очистки тестовых вложений .

Если вы действительно хотите сбросить историю версий, вы можете перенести свой код в чистый командный проект, а затем списать старый..

2 голосов
/ 19 февраля 2012

Вы также должны быть уверены, какой компонент TFS использует больше всего дискового пространства.

Вы можете выполнить следующий запрос SQL в вашей базе данных Tfs_Collection, чтобы узнать, какие таблицы занимают больше всего места.

-- Table rows and data sizes 
CREATE TABLE #t (     [name] NVARCHAR(128),    [rows] CHAR(11),    reserved VARCHAR(18),     data VARCHAR(18),     index_size VARCHAR(18),    unused VARCHAR(18)) 
GO

INSERT #t 
EXEC [sys].[sp_MSforeachtable] 'EXEC sp_spaceused ''?''' 
GO

SELECT 
    name as TableName, 
    Rows, 
    ROUND(CAST(REPLACE(reserved, ' KB', '') as float) / 1024,2) as ReservedMB, 
    ROUND(CAST(REPLACE(data, ' KB', '') as float) / 1024,2) as DataMB, 
    ROUND(CAST(REPLACE(index_size, ' KB', '') as float) / 1024,2) as IndexMB, 
    ROUND(CAST(REPLACE(unused, ' KB', '') as float) / 1024,2) as UnusedMB 
FROM #t 
ORDER BY CAST(REPLACE(reserved, ' KB', '') as float) DESC 
GO

DROP TABLE #t 
GO

Если вы используете Microsoft Test Manager, возможно, что вложения тестов занимают больше места, чем вы думали. Посмотрите этот пост в блоге для получения дополнительной информации о том, как интерпретировать этот запрос и что делать: TFS2010: тестовый очиститель вложений и почему вы должны его использовать

...