Я ищу хороший способ автоматического добавления svn всех неверсионных файлов в рабочей копии в мой репозиторий SVN.
У меня есть живой сервер, который может создавать несколько файлов, которые должны находиться под контролем исходного кода. Я хотел бы иметь короткий сценарий, который я могу запустить, чтобы автоматически добавлять их, вместо того, чтобы проходить и добавлять их по одному.
Мой сервер работает под управлением Windows Server 2003, поэтому решение Unix не будет работать.
svn
command-line
windows-server-2003
JerSchneid
источник
источник
Ответы:
svn add --force * --auto-props --parents --depth infinity -q
Отличный совет! Одно замечание: мой Eclipse автоматически добавляет новые файлы в список игнорируемых. Это может быть вопросом конфигурации, но в любом случае: есть
--no-ignore
опция, которая помогает.После этого вы можете зафиксировать:
источник
alias magic="svn add --force * --auto-props --parents --depth infinity -q"
- объяснил:svn help add
*
в конце, иначе это не сработает (у меня в аренде)Это другой мой вопрос, но там есть ответ на этот вопрос:
источник
Что работает, это:
Добавляет содержимое подкаталогов.
Не добавляет игнорируемые файлы.
Перечисляет, какие файлы были добавлены.
Точка в команде указывает текущий каталог, его можно заменить конкретным именем или путем, если вы хотите добавить каталог, отличный от текущего.
источник
.\*
или если svn root находится в другом каталогеstuff\svn_root\*
.stuff\svn_root
не добавляет файлы в подкаталогах (например, вstuff\svn_root\already_in_svn\not_in_svn.txt
). Отсюда и звезда в конце.Это сработало для меня:
( Источник )
Поскольку вы уже решили свою проблему для Windows, это решение UNIX (вслед за Сэмом). Я добавил здесь, так как считаю, что он все еще полезен для тех, кто задает этот вопрос и спрашивает об одном и том же (поскольку заголовок не включает ключевое слово «WINDOWS»).
Примечание (февраль 2015 г.): Как прокомментировал "bdrx", приведенная выше команда может быть еще более упрощена следующим образом:
источник
awk '/^[?]/{print $2}'
; Нет необходимости в дополнительном процессе grep.Это добавит любой неверсионный файл в текущий каталог и все версионные дочерние каталоги.
источник
Этот метод должен обрабатывать имена файлов, в которых есть любое число / комбинация пробелов ...
Вот объяснение того, что делает эта команда:
Используйте аргумент -i для xargs, чтобы обрабатывать возможность импорта имен файлов с пробелами в 'svn add' - в основном, -i устанавливает {} для использования в качестве заполнителя, поэтому мы можем поместить символы "вокруг имени файла, используемого 'svn Добавить'.
Преимущество этого метода в том, что он должен обрабатывать имена файлов с пробелами в них.
источник
В TortoiseSVN эта возможность встроена, если вы хотите использовать решение без командной строки. Просто щелкните правой кнопкой мыши папку верхнего уровня и выберите Добавить ...
источник
Это как описано в svn book и самое простое и отлично подходит для меня
http://svnbook.red-bean.com/en/1.6/svn.ref.svn.c.add.html
источник
Использование:
источник
svn status | cut -d ? -f 2 -s | xargs svn add
Я всегда использую:
Копировать вставить
источник
Поскольку этот пост помечен Windows, я подумал, что смогу найти решение для Windows. Я хотел автоматизировать процесс, и я сделал файл bat. Я сопротивлялся созданию console.exe в C #.
Я хотел добавить любые файлы или папки, которые не добавляются в мой репозиторий, когда я начинаю процесс фиксации.
Проблема многих ответов заключается в том, что они перечисляют неверсионные файлы, которые следует игнорировать согласно моему списку игнорирования в TortoiseSVN .
Вот моя настройка хука и командный файл, который делает это
Скрипт черепахового крючка:
svnadd.bat
источник
В рамках этой реализации у вас будут проблемы в случае, если ваши папки / имена файлов имеют более одного пробела, как показано ниже:
такие случаи охватываются простым:
источник
Если вы используете Linux или Cygwin или MinGW в Windows, вы можете использовать bash-подобные решения, подобные следующим. В отличие от других подобных, представленных здесь, этот учитывает пространства имен файлов:
источник
Потратив некоторое время, пытаясь понять, как рекурсивно добавлять только некоторые файлы, я подумал, что было бы правильно поделиться тем, что сработало для меня:
Здесь идет некоторое объяснение.
Первая команда добавляет все каталоги. Вторая команда добавляет только файлы в соответствии с указанными шаблонами.
Позвольте мне дать более подробную информацию:
Во второй команде единственные различия - это команда dir и команда svn, я думаю, это достаточно ясно.
источник
Вы можете использовать команду
или
Если ваши файлы / каталоги не добавляются рекурсивно. Тогда проверь это.
Рекурсивное добавление является свойством по умолчанию . Вы можете увидеть в книге SVN .
Проблема может быть в вашем списке игнорирования или в глобальных свойствах.
Я получил решение гугл трекер
Проверьте глобальные свойства для игнорирования звезды (*)
TortoiseSVN > Properties
.svn:global-ignores with a value of *
star(*)
то он будет игнорировать рекурсивное добавление. Так что удалите это свойство.Проверьте глобальный шаблон игнорирования для игнорирования звезды (*)
TortoiseSVN > Settings > General
.star(*)
, удалите это свойство.Этот парень также объяснил, почему это свойство добавлено в мой проект.
Наиболее вероятный способ, которым это получилось, заключается в том, что кто-то щелкнул правой кнопкой мыши файл без какого-либо расширения и выбрал TortoiseSVN -> SVN Ignore -> * (рекурсивно), а затем зафиксировал это.
источник
Вы можете ввести следующую команду в Linux:
источник
Так как он указал Windows, где awk & sed не являются стандартными:
или в пакетном файле:
источник
Это ленивый и опасный способ синхронизации каталога с SVN, включая новые файлы:
Хотя это может работать в крайнем случае, это может иметь серьезные последствия. Например, SVN часто теряет историю файла.
Идеальный способ синхронизировать каталог - это иметь возможность использовать diff, а затем использовать svn patch, однако это отличается от форматов в команде diff, и команда svn diff будет сравнивать различия рабочих каталогов, а не различия на уровне файловой системы.
источник
Я думаю, что я сделал нечто подобное с:
но не уверен, что моя память верна ;-p
источник