Поиск файлов, не добавленных в subversion
Следующий вопрос становится все более распространенным:
- В проекте есть несколько разработчиков, которые включают новые файлы (обычно изображения)
- Все говорят, что все проверено, и мы замораживаем развитие. Неизвестно, есть ли изображения, которые не были проверены. Пользователь не замечает недостающие файлы, потому что они новы, а не выходы, поэтому svn выглядит хорошо.
- Код скомпилирован и развернут (извините, нет команды QA)
- На следующий день клиент рассказывает нам о недостающих изображениях
- КТО читает нам акт беспорядков
Примечание. Пути изображений как в коде, так и в базах данных, поэтому вам нелегко получить полный список всех используемых изображений.
Моя надежда состоит в том, чтобы написать небольшую программу на С# для всех, кто будет запускаться до развертывания. Я хочу узнать, какие файлы в каталоге проекта (или один из них subdir.s, рекурсивно) не были добавлены в subversion. В идеале я также хотел бы исключить элементы, которые были активно добавлены в список игнорирования.
Мы используем TortoiseSVN с хостом и клиентами Windows.
Как я могу программно обнаруживать несложенные файлы?
Самое близкое, что мне удалось найти, это this, говорящий, чтобы использовать svn status | grep -e ^?
, но это похоже на команду Unix.
Ответы
Ответ 1
Вы можете использовать SharpSvn для этого и написать что-то вроде:
SvnClient client = GetClient();
client.Status(workingCopyPath, (o, e) =>
{
if(e.LocalContentStatus == SvnStatus.NotVersioned)
{
Console.WriteLine("Not versioned: " + e.FullPath);
}
});
Изменить: это также будет учитывать ваши файлы игнорирования и svn:ignore
.
Ответ 2
svn status | grep -e ^?
Это команда unix, но я уверен, что если вы выполняете фиксацию из Tortoise, вы можете видеть новые файлы с вопросительным знаком, которые являются файлами, которые не находятся под управлением svn
Ответ 3
Этот вопрос помечен как tortoisesvn
, поэтому я предполагаю, что ваша команда использует TortoiseSVN в качестве клиента. Как показано @Joe Enos, TortoiseSVN отображает неверсированные файлы, которые не соответствуют элементам в svn:ignore
. Интересно, может ли добавление другого инструмента помочь, так как команда уже должна проверять файлы без вершин с TortoiseSVN.
В противном случае программа С# кажется излишней для поиска неперевернутых файлов в рабочем каталоге SVN. Как предположил @Josh Kelley, вы можете просто использовать SVN-клиент командной строки (CollabNet или Slik SVN, например) и grep
.
Вы также можете использовать команду findstr
, доступную в командной строке Windows:
svn status | findstr "^?"
Ответ 4
Код компилируется и развертывается (извините, не команда QA)
Разве это не настоящая проблема? Если вы отправляете непроверенный код клиенту, то, конечно, первым человеком, который обнаружит какие-либо проблемы, будет клиент. Возможно (в дополнение к устранению этой конкретной проблемы), что вам нужно сделать, это добавить, по крайней мере, некоторое базовое автоматическое (или ручное) тестирование функциональности в ваш процесс сборки, когда-то между тем, когда код компилируется и когда он передается клиенту.
Ответ 5
Вы можете установить CollabNet Subversion Command-Line Client, затем запустить команду svn
в качестве подпроцесса, подключить его к вашей программе, и поиск строк, которые имеют ?
как их первый символ (с указанием неизвестного/не отмеченного в Subversion и не игнорируемого). Вы можете использовать клиент командной строки CollabNet вместе с TortoiseSVN.
То же самое, что и svn status | grep -e ^?
, но оно не зависит от инструментов Unix.
В качестве альтернативы вы можете просто установить Cygwin и иметь полный набор инструментов Unix в вашем распоряжении.
Ответ 6
Также вы можете изменить один параметр, в котором будут отображаться папки с новыми добавленными файлами.
Настройки- > Наложение значков- > Показать оверлей для непереведенного элемента
Щелкните правой кнопкой мыши в папке, затем выберите TortoiseSVN - Настройки. Нажмите "Наложение значков". При правильной проверке - "Неверсированные файлы отмечают родительскую папку как измененную"
Это работает на windows7, не пробовали с другой ОС