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

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

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

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

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

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

Jason Coco 14.11.2008 00:20
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
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

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