Всегда Фиксация тот же файл с SVN

Надеюсь, это поможет.

 <script type="text/javascript">
   function getParameters() {
     var searchString = window.location.search.substring(1),
       params = searchString.split("&"),
       hash = {};

     if (searchString == "") return {};
     for (var i = 0; i < params.length; i++) {
       var val = params[i].split("=");
       hash[unescape(val[0])] = unescape(val[1]);
     }

     return hash;
   }

    $(window).load(function() {
      var param = getParameters();
      if (typeof param.sent !== "undefined") {
        // Do something.
      }
    });
</script>
10
задан GateKiller 24 February 2009 в 14:42
поделиться

13 ответов

Если Вам установили TortoiseSVN, Вы также имеете инструмент SubWCRev в наличии. Используйте тот инструмент для получения пересмотра вместо того, чтобы неправильно использовать ключевое слово $REV$.

  1. создайте шаблонный файл, который содержит Ваш, определяет, возможно, что-то как

    константа длинный WC_REV = $WCREV$;

    в файле, названном version.h.tmpl

  2. на каждой сборке назовите SubWCRev для создания 'реального' файла, который можно использовать в приложении:

    SubWCRev path\to\workingcopy path\to\version.h.tmpl path\to\version.h

Это создаст файл version.h из version.h.tmpl с текстовым $WCREV$, замененным пересмотром, в котором Ваша рабочая копия в настоящее время.

Документы для SubWCRev могли бы помочь также.

9
ответ дан 3 December 2019 в 13:35
поделиться

Я думаю, что Вы не можете понимать, как $Rev$ отмечают работы. Цели флага Rev не состоял в том, чтобы фиксировать этот пересмотр всегда в репозиторий подверсии. Цель состоит в том, что на обновлении, флаг Rev всегда будет, каков пересмотр. Вы не должны должны быть помещать код в подверсию, которая содержит пересмотр. Подверсия очень хороша в отслеживании той информации для Вас.

То, что Вы, вероятно, пропустили, - то, что, необходимо установить свойство на файле так, чтобы ключевое слово Пересмотра было правильно обработано.

svn propset svn:keywords "Revision" file.txt

Это гарантирует это каждый раз, когда Вы делаете обновление, $Rev: флаг xxx$ будет обновлен с текущим пересмотром. Вы не должны волноваться о том, как это посвящает себя репозиторию.

6
ответ дан 3 December 2019 в 13:35
поделиться

В основном Вы хотите вывод svnversion команда в файле.

Такие файлы обычно не допускаются в репозиторий и автоматически создаются сценарием сборки. Я предлагаю, чтобы Вы сделали то же. Если Вы не создаете, но только к a svn up на стороне сервера просто звоните svnversion после svn up или создайте сценарий оболочки, чтобы сделать оба действия.

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

13
ответ дан 3 December 2019 в 13:35
поделиться

Это хорошо работает если не я не вношу изменений в тот файл, это не становится зафиксированным.

Если бы файл никогда не изменяется, почему Вам был бы нужен он для фиксирования каждый раз?

[РЕДАКТИРОВАНИЕ] @Sean = я понимаю то, что он пытается сделать, но если файл никогда не станет обновленным через рычаг или некоторый другой процесс и поэтому никогда не изменится затем, то SVN никогда не будет брать его.

3
ответ дан 3 December 2019 в 13:35
поделиться

@gatekiller: кажется, что TortoiseSVN действительно поддерживает Клиентские Рычаги.

4
ответ дан 3 December 2019 в 13:35
поделиться

Файл числа пересмотра мог быть изменен сценарием, который развертывает Ваш веб-сайт с SVN на веб-сервер?

Не уверенный в в Windows, но использовании сценария удара, я сделал бы что-то как..

$ version=$(svnversion)
$ svn export . /tmp/staging/
Export complete.
$ echo "Revision: ${version}" > /tmp/staging/version.txt

Затем /tmp/staging/version.txt содержал бы "Пересмотр: 1 дюйм (или независимо от того, что самое большое количество пересмотра).

Вы могли, конечно, заменить некоторый идентификатор в файле, как $Rev$ (вместо создания version.txt согласно примеру выше)

2
ответ дан 3 December 2019 в 13:35
поделиться

Я предлагаю изменить подход, фиксируя файл каждый раз средства неявно хранение глобального числа пересмотра в том файле. Там пользователю, возможно, понадобятся другое ключевое слово, GlobalKey, неотъемлемость которого объяснена здесь, я на самом деле не использовал упомянутый svnversion однако, это может привести Вас к решению.

2
ответ дан 3 December 2019 в 13:35
поделиться

В зависимости от Вашего клиента некоторые из них предлагают рычаг перед фиксацией, что можно реализовать что-то, что просто "касается" файла и отмечает его, как изменено. Если бы Ваше использование чего-то как Visual Studio, Вы могли бы создать задачу сборки сообщения, которая "коснулась" бы файла, но необходимо будет удостовериться, что Вы делаете сборку прежде, чем фиксировать изменения.

1
ответ дан 3 December 2019 в 13:35
поделиться

@gradonmantank: Поскольку он хочет, чтобы тот файл был обновлен с последним числом пересмотра. Вы читали его вопрос полностью?

Рычаг перед фиксацией мог бы работать.

1
ответ дан 3 December 2019 в 13:35
поделиться

Я раньше имел ручной способ сделать это. Я запустил скрипт, который будет использовать sed для замены комментария текущей меткой времени в моем файле $Rev$. Тем путем содержание файла изменилось бы, и Подверсия будет фиксировать его.

То, что я не сделал, должно было взять это к следующему шагу: использование репозитория Подверсии сцепляется для автоматизации процесса. Проблема, я не уверен, разрешают ли Вам изменить содержание файла в рычагах. Документация, кажется, предполагает, что Вы не можете.

Вместо этого я предполагаю, что Вам было бы нужно немного сценария, который Вы выполните вместо svn commit управляйте, чтобы первые обновления метка времени и затем выполнили нормальную фиксацию.

1
ответ дан 3 December 2019 в 13:35
поделиться

Comitting файл не принес бы Вам пользы. Файл не фиксируется с полной версией внутри, это заменяется просто ключевым словом. При рассмотрении файла в репозитории, Вы будете видеть это.

По сути, необходимо вынудить файл быть обновленным в некотором роде вместо этого.

Если Вы находитесь на платформе Windows, можно использовать инструмент SubWCRev, распределенный с TortoiseSVN. Документация здесь.

1
ответ дан 3 December 2019 в 13:35
поделиться

Можно использовать svn pre-commit-hooks, чтобы сделать это.
Общее представление, которое я имею в виду, создают тот, что, прежде чем фиксация поместит новое число пересмотра в файл (получите его с помощью svnlook), или, возможно, измените поддельное свойство на файле (это должно измениться, или SVN проигнорирует его).

Для получения дополнительной информации о pre-commit-hooks я нашел эту страницу полезной.

1
ответ дан 3 December 2019 в 13:35
поделиться

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

При использовании знатока можно сделать это с maven-buildnumber-plugin.

1
ответ дан 3 December 2019 в 13:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: