Subversion: фиксировать только измененные файлы

Я хочу зафиксировать большое количество измененных XML-файлов. Однако в каталоге, который я хочу рекурсивно искать, есть много папок / файлов, которые были добавлены локально, и я не хочу их фиксировать.

Есть ли способ сделать это в командной строке?

Обновление: я должен был включить информацию о версии SVN: svn, версия 1.4.6 (r28521), скомпилирована 11 марта 2008 г., 08:26:35

P.S. Мне были бы интересны ответы, в том числе о том, как принудительно выполнить фиксацию, например даже если файлы заблокированы.

Я обновил свой ответ с учетом ваших изменений в вопросе. Я надеюсь, что теперь это более полезно, но если это происходит часто, я бы порекомендовал обновить (по крайней мере, клиентов) до 1.5, чтобы вы могли использовать набор изменений :)

Jason Coco 14.11.2008 00:20
Асинхронная передача данных с помощью sendBeacon в JavaScript
Асинхронная передача данных с помощью sendBeacon в JavaScript
В современных веб-приложениях отправка данных из JavaScript на стороне клиента на сервер является распространенной задачей. Одним из популярных...
Как подобрать выигрышные акции с помощью анализа и визуализации на Python
Как подобрать выигрышные акции с помощью анализа и визуализации на Python
Отказ от ответственности: Эта статья предназначена только для демонстрации и не должна использоваться в качестве инвестиционного совета.
Принципы ООП в JavaScript
Принципы ООП в JavaScript
Парадигма объектно-ориентированного программирования имеет 4 основных принципа,
Пройдите собеседование по Angular: Общие вопросы и ответы экспертов
Пройдите собеседование по Angular: Общие вопросы и ответы экспертов
Можете ли вы объяснить разницу между ngOnInit и конструктором в Angular?
Laravel с Turbo JS
Laravel с Turbo JS
Turbo - это библиотека JavaScript для упрощения создания быстрых и высокоинтерактивных веб-приложений. Она работает с помощью техники под названием...
Типы ввода HTML: Лучшие практики и советы
Типы ввода HTML: Лучшие практики и советы
HTML, или HyperText Markup Language , является стандартным языком разметки, используемым для создания веб-страниц. Типы ввода HTML - это различные...
2
1
9 232
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вы пробовали использовать свойство svn: ignore для локальных файлов / папок? Но если вы их не добавите svn, они не будут зафиксированы ...

Обычно --force позволяет украсть блокировку файла.

--force выдает ошибку, говоря, что она не распознана для команды svn commit. 'svn help commit' упоминает только параметр принудительного ведения журнала, который, как я полагаю, мне не нужен.

Grundlefleck 13.11.2008 23:29

РЕДАКТИРОВАТЬ: Я переписываю этот ответ на основе некоторой информации, которую вы обновили в своих вопросах.

Во-первых, для принудительной разблокировки файлов недостаточно просто выполнить фиксацию. Вы используете --force с командой разблокировки, и вы должны использовать ее с точным URL-адресом, который вы хотите разблокировать. К сожалению, это единственный способ сделать это, если у вас нет доступа к репозиторию. Если у вас есть доступ к репозиторию напрямую, вы можете использовать команду svnadmin, как показано здесь:

svnadmin lslocks /path/to/repository

Это отобразит заблокированные файлы. Отпереть:

svnadmin rmlocks /path/to/repository /project/path/to/locked/file

Если у вас нет прямого доступа к репозиторию, вы снимаете блокировки по очереди следующим образом:

svn --force unlock svn://url.to.repository/project/path/to/locked/file

Когда вы будете готовы к регистрации, вы можете напрямую перечислить файлы, которые вы хотите зарегистрировать, вместо того, чтобы просто делать каталог по умолчанию. Это позволит вам регистрировать только измененные файлы XML, игнорируя изменения, дополнения в структуре каталогов или что-то еще, что вы не хотите регистрировать (также добавлен пример разблокировки):

svn --force unlock svn;//url.to.repository/project/janes_subdir/jane.xml
svn ci -m "Whatever Log" foo.xml junk.xml my_subdir/*.xml janes_subdir/jane.xml

Обычно я бы не стал, но держатели собрали вещи и уехали домой на ночь. :-)

Grundlefleck 13.11.2008 23:28

Ну ладно, тогда в этом есть смысл :)

Jason Coco 13.11.2008 23:29

Вы не указали, какую командную строку, предполагая UNIX или cygwin.

Несколько вариантов:

  1. find . -name '*.xml' -print0 | xargs -0 svn ci
  2. svn status | egrep '^M.*\.xml$' | sed -e 's/^. *//' > tmp.txt && svn ci --targets tmp.txt
  3. svn status > tmp.txt && $EDITOR tmp.txt && sed -e 's/^. *//' < tmp.txt > tmp2.txt && svn ci --targets tmp2.txt

ПРИМЕЧАНИЕ: я не тестировал команды.

Первый зафиксирует все файлы XML (включая те, которые вы недавно добавили - это не проблема, если вы не добавили новые файлы xml).

Второй фиксирует все измененные xml-файлы.

Что касается блокировки, был еще один комментарий, который, казалось, охватил большую часть этого.

Это помогло мне решить аналогичную проблему («фиксировать только недавно добавленные файлы»). Спасибо! Утилиты командной строки Unix спешат на помощь.

Brighid McDonnell 29.11.2011 03:15

Другие вопросы по теме