Как лучше всего узнать, какие файлы заблокированы в Subversion?

Наконец-то я заставил мою группу перейти с SourceSafe на Subversion. К сожалению, мой менеджер по-прежнему хочет использовать эксклюзивные блокировки для каждого файла. Поэтому я установил свойство svn: needs-lock для каждого файла и создал ловушку перед фиксацией, чтобы убедиться, что свойство остается установленным.

Мы запускаем Subversion на сервере Linux. Большинство из нас используют компьютеры с Windows, а некоторые - Mac. Мы используем различные клиенты SVN (TortoiseSVN, SmartSVN, Subclipse и т. Д.).

Теперь нам нужен хороший / простой способ увидеть все файлы, которые в настоящее время заблокированы во всем репозитории (и кто их заблокировал). Я немного покопался в Tortoise и Subclipse, но не нашел то, что ищу. В наших проектах много подкаталогов на нескольких уровнях, поэтому просмотр каждого отдельного каталога займет слишком много времени.

Я бы хотел получить один отчет, который я могу запустить, в котором будет перечислено все, что заблокировано в данный момент, и кто это заблокировал. Как лучше всего получить такую ​​информацию?


person Shane    schedule 12.11.2008    source источник
comment
Я знаю, что вы это знаете, но эти блокировки будут убийцей производительности в общих областях кода. Инструменты слияния сейчас довольно хороши, а слияние изменений проще, чем кажется вашему начальнику.   -  person Tom Leys    schedule 12.11.2008
comment
@TomLeys У вас могут быть права в случае исходного кода или любого хорошего объединяемого типа файла. Но это не всегда так, например, иногда SVN используется для управления файлами данных или офисными документами, ни один из них не имеет легко доступных, широко используемых инструментов слияния.   -  person peterh    schedule 26.04.2016
comment
Как насчет слияния файлов Informatica (хранящихся как xml) в SVN? Думаю, единственный выход - svn lock ... не так ли?   -  person Tarmit    schedule 04.01.2017


Ответы (4)


Вы ищете _1 _ команда.

Я настроил это на работе, потому что мы храним некоторые документы Word в нашем репозитории Subversion (с svn:needs-lock). У меня есть задание cron, которое каждый день проверяет список блокировок и отправляет по электронной почте отчет обо всех блокировках старше 7 дней всей команде. Таким образом мы можем определить, кто бездельничает и долгое время сидит на заблокированной копии документа.

person Greg Hewgill    schedule 12.11.2008
comment
В Office 2003 теперь встроено объединение текстовых документов. Я не знаю, когда была представлена ​​эта функция, но это может означать, что вам больше не нужно блокировать свои текстовые документы. - person Tom Leys; 12.11.2008
comment
Спасибо, Грег. Не могли бы вы сказать мне, как сделать так, чтобы в списке отображались только блокировки старше x дней? - person Shane; 13.11.2008
comment
Я только что написал скрипт, который анализирует вывод команды svnadmin lslocks, смотрит на дату создания для каждой блокировки и вычисляет количество дней с этого момента. Мой настоящий сценарий работает, и у меня сейчас нет к нему доступа, но его должно быть достаточно легко понять. - person Greg Hewgill; 13.11.2008

Возможно, это не тот ответ, который вы ищете, но вам следует попытаться убедить менеджера в том, что блокировки на самом деле - не лучшая практика разработки. На эту тему написано много, поэтому я не буду здесь все повторять.

Когда вы переходите от среды блокировки к среде без принудительных блокировок проверки, сначала вы думаете, что это приведет к хаосу, но на самом деле это не так. SVN хорош в объединении изменений, когда два человека работают над одним и тем же файлом, и даже если у вас возникают конфликты, их не так уж плохо исправить.

Гораздо лучше, чем ждать парня, который пошел обедать с извлеченным критически важным файлом, или, что еще хуже, уехал в отпуск.

person Eric Z Beard    schedule 12.11.2008
comment
Я пытаюсь делать это шаг за шагом. Просто вывести группу из SourceSafe было нелегко. Как только они освоятся с SVN, я планирую заняться отказом от эксклюзивной блокировки. - person Shane; 13.11.2008
comment
Блокировки неоценимы при работе с двоичными файлами, которые невозможно тривиально объединить или разделить, как документы Microsoft Office. - person DanB; 30.09.2014

Чтобы увидеть, какие блокировки держите вы и другие пользователи, вы можете использовать TortoiseSVN → Проверить наличие изменений .... Локальные токены блокировки отображаются немедленно. Чтобы проверить наличие блокировок, хранимых другими (и увидеть, не сломаны ли или украдены ли какие-либо из ваших блокировок), вам нужно нажать на Проверить репозиторий.

person Community    schedule 22.07.2009

Вы можете обнаружить блокировки из локальной кассы, используя svn status --show-updates, который поставит O перед всеми файлами, заблокированными на сервере.

e.g.

$ svn status --show-updates
     O      279532   LockedFile
?                    UncommittedFile
M           279532   ModifiedFile

см. svnbook Больше подробностей

person ashirley    schedule 20.03.2012