Как отменить последние изменения в subversion trunk? [Дубликат]

Ваш код разбит на две полностью отдельные части, серверную сторону и клиентскую сторону .

                    |
               ---------->
              HTTP request
                    |
+--------------+    |    +--------------+
|              |    |    |              |
|    browser   |    |    |  web  server |
| (JavaScript) |    |    |  (PHP etc.)  |
|              |    |    |              |
+--------------+    |    +--------------+
                    |
  client side       |      server side
                    |
               <----------
          HTML, CSS, JavaScript
                    |

Обе стороны общаются через HTTP-запросы и ответы. PHP выполняется на сервере и выводит код HTML и, возможно, JavaScript, который отправляется как ответ клиенту, где интерпретируется HTML, и выполняется JavaScript. Когда PHP завершит вывод ответа, сценарий закончится, и на сервере ничего не произойдет, пока не появится новый HTTP-запрос.

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


Шаг 1, PHP выполняет весь код между тегами . В результате получилось следующее:


Вызов file_put_contents не привел ни к чему, он просто написал «+ foo +» в файл. Вызов привел к выводу «42», который теперь находится в том месте, где этот код использовался.

Этот итоговый код HTML / JavaScript теперь отправляется клиенту, где он получает оценку , Вызов alert работает, а переменная foo нигде не используется.

Весь PHP-код выполняется на сервере до того, как клиент даже начнет выполнение какого-либо JavaScript. В ответе JavaScript, с которым может взаимодействовать JavaScript, нет кода PHP.

Чтобы вызвать некоторый код PHP, клиент должен будет отправить новый HTTP-запрос на сервер. Это может произойти с использованием одного из трех возможных способов:

  1. Ссылка, которая заставляет браузер загружать новую страницу.
  2. Подача формы, которая передает данные на сервер и загружает новую страницу.
  3. Запрос AJAX , который является техникой Javascript, чтобы сделать обычный HTTP-запрос на сервер (например, 1. и 2. будет), но без оставляя текущую страницу.

Вот более подробный изложение этого метода

Вы также можете использовать JavaScript, чтобы браузер открыл новую страницу с помощью window.location или отправить форму, подражая возможностям 1 и 2.

14
задан Robert Walker 16 October 2008 в 21:49
поделиться

7 ответов

Чтобы узнать подробности, см. svn manual - Undoing Changes

Как описано в виде метки, которую вы хотите сделать: svn merge -r 5: 4 file1 file2 Это означает слияние при изменении от 4 до 5 назад, т. Е. отмените изменения

Вы также можете ввести: svn merge -c -5 file1 file2 Это означает применение изменений, которые произошли при передаче ревизии 5 назад.

Затем вы должны вручную просмотреть Изменения.

Наконец, вы должны зафиксировать изменения (выше сличений изменилась только ваша рабочая копия).

6
ответ дан bahrep 25 August 2018 в 08:34
поделиться
  • 1
    Отлично, это именно то, что я искал. Спасибо. – Robert Walker 16 October 2008 в 22:30

Обычно слияние обратного слияния будет достаточным для отката зафиксированных изменений ...

15
ответ дан CMS 25 August 2018 в 08:34
поделиться

Я предполагаю, что вы используете TortoiseSVN в своем ответе.

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

Если вы хотите сравнить две версии, это довольно легко в tortoiseSvn, щелкните правой кнопкой мыши в файле, затем зайдите в TortoiseSvn-> Show Log. Затем выберите обе версии, которую вы хотите сравнить, щелкните правой кнопкой мыши и затем сравните версии.

Если вы хотите найти, кто несет ответственность за ошибку, вы можете использовать пункт меню «Виноват» в TortoiseSVN ... Это будет сообщите, кто изменил каждую строку и в какой версии.

О, и если вы хотите вернуть файл назад к предыдущей версии, вы можете сделать это в TortoiseSvn-> Show Log, затем вы выберете ревизию вы хотите вернуться, щелкните правой кнопкой мыши и выберите «Вернуться к этой ревизии».

2
ответ дан EtienneT 25 August 2018 в 08:34
поделиться

Я бы пошел с ответом Этьена. Но под «Вернуть к этой ревизии» есть также опция «Отменить изменения из этой ревизии». Этот вариант вполне соответствовал бы требованиям Роберта Уокера отменить изменения из версии № 5. Не забудьте зафиксировать изменения.

2
ответ дан ffonz 25 August 2018 в 08:34
поделиться

Я думаю, вам нужно сначала свернуть слияние между 5: 4, а затем вернуть правильный файл

  1. svn merge -r 5: 5 http://svn.example.com / repos / calc / trunk
  2. svn revert correctfile

, вы, вероятно, закончите с странным состоянием в файлах 2buggy, которые вы, надеюсь, можете решить вручную .

1
ответ дан Jonke 25 August 2018 в 08:34
поделиться

проверить текущую версию, затем svn merge -r 5: 4 file1 file2 (это из памяти и может быть не совсем корректно)

1
ответ дан Mark Bessey 25 August 2018 в 08:34
поделиться

Если вы используете http://tortoisesvn.tigris.org/ , то это довольно простой процесс. Просто щелкните правой кнопкой мыши по файлу и выберите «журнал», чтобы получить список изменений между теперь и выбранной реверсией. Затем нужно переустановить два файла в редакции № 4 и внести изменения:)

0
ответ дан nlaq 25 August 2018 в 08:34
поделиться
Другие вопросы по тегам:

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