Ваш код разбит на две полностью отдельные части, серверную сторону и клиентскую сторону .
|
---------->
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-запрос на сервер. Это может произойти с использованием одного из трех возможных способов:
Вот более подробный изложение этого метода
Вы также можете использовать JavaScript, чтобы браузер открыл новую страницу с помощью window.location
или отправить форму, подражая возможностям 1 и 2.
Чтобы узнать подробности, см. svn manual - Undoing Changes
Как описано в виде метки, которую вы хотите сделать: svn merge -r 5: 4 file1 file2 Это означает слияние при изменении от 4 до 5 назад, т. Е. отмените изменения
Вы также можете ввести: svn merge -c -5 file1 file2 Это означает применение изменений, которые произошли при передаче ревизии 5 назад.
Затем вы должны вручную просмотреть Изменения.
Наконец, вы должны зафиксировать изменения (выше сличений изменилась только ваша рабочая копия).
Обычно слияние обратного слияния будет достаточным для отката зафиксированных изменений ...
Я предполагаю, что вы используете TortoiseSVN в своем ответе.
Я не думаю, что ваш сценарий приведет к откату файлов, потому что вы все равно хотите сохранить историю каждого файла.
Если вы хотите сравнить две версии, это довольно легко в tortoiseSvn, щелкните правой кнопкой мыши в файле, затем зайдите в TortoiseSvn-> Show Log. Затем выберите обе версии, которую вы хотите сравнить, щелкните правой кнопкой мыши и затем сравните версии.
Если вы хотите найти, кто несет ответственность за ошибку, вы можете использовать пункт меню «Виноват» в TortoiseSVN ... Это будет сообщите, кто изменил каждую строку и в какой версии.
О, и если вы хотите вернуть файл назад к предыдущей версии, вы можете сделать это в TortoiseSvn-> Show Log, затем вы выберете ревизию вы хотите вернуться, щелкните правой кнопкой мыши и выберите «Вернуться к этой ревизии».
Я бы пошел с ответом Этьена. Но под «Вернуть к этой ревизии» есть также опция «Отменить изменения из этой ревизии». Этот вариант вполне соответствовал бы требованиям Роберта Уокера отменить изменения из версии № 5. Не забудьте зафиксировать изменения.
Я думаю, вам нужно сначала свернуть слияние между 5: 4, а затем вернуть правильный файл
, вы, вероятно, закончите с странным состоянием в файлах 2buggy, которые вы, надеюсь, можете решить вручную .
проверить текущую версию, затем svn merge -r 5: 4 file1 file2 (это из памяти и может быть не совсем корректно)
Если вы используете http://tortoisesvn.tigris.org/ , то это довольно простой процесс. Просто щелкните правой кнопкой мыши по файлу и выберите «журнал», чтобы получить список изменений между теперь и выбранной реверсией. Затем нужно переустановить два файла в редакции № 4 и внести изменения:)