Автоматическое обновление поля текущей версии SVN для документа Word / Openoffice - PullRequest
4 голосов
/ 23 апреля 2009

Функция Subversion «ключевое слово» отлично подходит для автоматической маркировки текстовых файлов с номером ревизии. Мне бы очень хотелось сделать подобное для документов Word и / или OpenOffice.

Я попробовал это с документами Word, вставив подстановку ключевого слова «фиксированной ширины» в поле свойств документа «комментарий». Но, похоже, он все равно как-то портит документ (плюс я не знаю, что может означать «фиксированная ширина» в случае многобайтовых символов) Мне также не понравилась эта идея, потому что было бы неправильно вставлять число в печатаемую часть самого документа.

Теперь я представляю себе макрос, который автоматически запускается при открытии документа и обновляет пользовательское свойство документа. Документ может содержать справочные поля свойства документа, которые обновляются со значением, сохраненным в свойстве документа.

Кто-нибудь делал это или делал что-то еще для достижения этой цели? Для Word или OpenOffice?

Ответы [ 5 ]

3 голосов
/ 23 апреля 2009

Первое: Номера встроенных версий - Добро или Зло? : Я считаю их злыми.

Вы не должны использовать внутренний внутренний номер технической версии для представления версии документа.

«Это редакция моего слова Word версии 2.2» - это не то же самое, что «это редакция 1567 слова моего документа Word».

  • Первый - это «аппликативный» номер редакции с точки зрения конечного клиента.
  • Последний является «техническим» номером ревизии с точки зрения инструмента.

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


При этом ... о более общем вопросе обновления свойств документов Office:

Этот поток обновляет поля word 2003 автоматически предлагает использовать Office API. Microsoft.Office.Interop не позволяет изменять свойства, но API-интерфейс VBA позволяет получить доступ к любому пользовательскому свойству, которое вы хотите установить для данного SmartTag .

В этой статье " Добавление смарт-тега с настраиваемым распознавателем в документ Word " приведен пример настраиваемого поведения SmartTag.

Смарт-теги - это строки текста, к которым прикреплена информация о типе; когда в документе появляется текстовая строка, соответствующая критериям, она распознается, и пользователь может выполнять действия, соответствующие строке этого типа.

Таким образом, можно представить себе SmartTag, способный распознавать строку «Редакция для этого документа», с нестандартным поведением: «Я запрашиваю правильный номер редакции в SVN и отображаю его» * ​​1039 *

1 голос
/ 03 сентября 2009

На самом деле мы используем «систему», несколько похожую (созданную бывшим коллегой), которая решает некоторые из этих проблем.

Желания ...

  • Мы хотим видеть, что две распечатки на самом деле имеют одинаковую версию.
  • Мы хотим иметь возможность определить источник распечатки (включая ревизию).
  • Мы хотим устранить проблемы, возникшие из-за того, что авторы забыли обновить номер редакции.

Решение

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

Полу технические детали ...

  • Номер версии "человека" хранится в пользовательском свойстве документа.
  • Мы установили все текстовые документы для восстановления блокировки (svn: needs-lock)
  • При блокировке знак плюс добавляется в конец строки редакции для обозначения «грязной» версии.
  • При фиксации знак плюс удаляется, а число увеличивается

Результат

система, в которой у нас есть номер редакции в печатном документе, который:

  • не изменится, если документ не изменится
  • указывает на грязные версии, то есть распечатывает измененную рабочую копию
  • отличается, если документы различаются (т.е. нет проблем с авторами, которые забывают обновить ревизию)
1 голос
/ 23 апреля 2009

Вы можете попробовать маленький сценарий Тоби: http://insights.oetiker.ch/windows/SvnProperties4MSOffice/

0 голосов
/ 24 апреля 2009

Ответ VonC убедил меня, что doc-open не время для обновления свойства документа. Например, если файл отправлен кому-то по электронной почте или скопирован с компакт-диска, или «экспортирован», он не может обновить свою версию SVN при открытии. Было бы трудно гарантировать, что файл никогда не будет содержать ошибочный устаревший номер ревизии. Таким образом, чтобы сделать это «правильно», номер версии файла должен быть обновлен при проверке / обновлении SVN.

Я полагаю, что для ключевых слов SVN в текстовых файлах клиент выполняет "манипулирование" файлом, обновляя его при извлечении и возвращаясь к "канонической" форме перед фиксацией. Так что для Word было бы здорово использовать хуки на стороне клиента, чтобы сделать то же самое. TortoiseSVN имеет клиентские хуки, , но я не думаю, что другие клиенты SVN имеют. На моей работе мы почти всегда используем TortoiseSVN, чтобы это работало хорошо.

Итак, я хотел бы написать две клиентские ловушки TortoiseSVN:

1) Хук после обновления для вставки свойства документа «SvnRevision», содержащего соответствующую SVN-версию коммита файла.

2) Хук предварительной фиксации для удаления свойства документа «SvnRevision». Это делает файл, хранящийся в репозитории, «чистым» в том случае, если его проверяет не-TortoiseSVN-клиент. (Это может также предотвратить конфликты слияния?)


Обновление: Arrr Я только что понял другую проблему: если я сделаю выше, то SVN будет думать, что файл изменился. Хм, это кажется трудным. Чтобы эта функция работала правильно, она действительно нуждается в достаточно тесной интеграции с клиентом.

0 голосов
/ 24 апреля 2009

Что если вы сохраните документ Word в формате .xml (так называемый плоский формат OPC)?

Тогда это просто текстовый документ, и ключевые слова svn должны просто работать.

...