Как мне вернуться к более старой версии нашего кода в Subversion?

Я могу только догадываться, но мне кажется, что ES5-strict говорит, что eval и arguments следует рассматривать как сырой синтаксис, а не идентификаторы. Разумно, что эти две функции должны быть реализованы на синтаксическом уровне, потому что у них есть поведение Amazing Funky Magic, которое невозможно воспроизвести с помощью нормальной функции.

(В частности eval может писать локальные переменные в функция, которая его вызывает, и запись в arguments странно изменяет значения локальных переменных, соответствующих аргументам. Хотя это поведение, кажется, уходит в строгом режиме, к счастью.)

По соображениям совместимости, ES5 не может реально сделать eval и arguments синтаксическим. Таким образом, они делают все возможное, что означает, что идентификатор arguments всегда относится к магии arguments, а идентификатор eval всегда относится исключительно к магии eval.

Он также может улучшить возможности для оптимизации, если JS-двигатели могут быть уверены, что функция содержит магию.

464
задан Chen Kinnrot 14 December 2017 в 08:14
поделиться

6 ответов

В основном вам нужно «объединить в обратном направлении» - применить разницу между текущей и предыдущей версией к текущей версии (так что вы получите рабочую копию, похожую на старая версия), а затем снова зафиксировать. Так, например, для перехода от ревизии 150 (текущей) к ревизии 140:

svn update
svn merge -r 150:140 .
svn commit -m "Rolled back to r140"

Красная книга Subversion имеет хороший раздел об этом . ​​

765
ответ дан 22 November 2019 в 22:47
поделиться

Щелкните правой кнопкой мыши проект> Заменить на> Ревизия или URL-адрес> Выберите конкретную ревизию, которую вы хотите отменить.

Теперь передайте локальную версию кода обновления в хранилище. Это вернет кодовую базу к определенной ревизии.

1
ответ дан KayV 14 December 2017 в 08:14
поделиться

Новые изменения можно вносить только в заголовок истории подрывной деятельности.

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

Найдите хороший номер ревизии и вернитесь

  1. Найдите номер ревизии старая копия, которую вы хотите.

    Получите текущую ревизию с помощью:

     svn info --show-item revision
    # или
    svn log
    

    Или для проверки более старых версий вашего проекта используйте:

     svn update -r <предыдущий_revision_number>
    

    , пока не найдете правильный номер редакции.

  2. Запишите правильный номер редакции (при условии 123 для примеров ниже).

  3. Обновление до последней редакции:

     svn update
    
  4. Отменить все изменения между нужной ревизией и последней версией:

     svn merge -r HEAD: 123.
    SVN коммит "Вернулся к ревизии 123"
    

    (аналогично ответу Джона Скита выше.)

Если вы не можете найти номер редакции

Если вы не можете найти старую копию, и вы просто хотите зафиксировать файлы, которые в данный момент находятся на вашем ПК :

  1. Сделайте копию своей хорошей версии (но без каких-либо папок .svn ):

     cd ..
    rsync -ai --exclude = .svn project / project-good /
    
  2. Теперь убедитесь, что у вас последняя версия:

     cd project
    SVN обновление
    # или сделать новый заказ
    svn checkout 
    
  3. Скопируйте вашу хорошую версию поверх рабочей копии.

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

     cd ..
    rsync -ai --exclude = .svn - удалить проект-товар / проект /
    

    Если у вас нет rsync, вы можете использовать cp -a , но вам также нужно будет удалить любые ненужные файлы вручную.

  4. Вы должны быть в состоянии зафиксировать то, что у вас есть сейчас.

     CD проект
    SVN коммит "Вернулся к хорошей копии"
    
173
ответ дан 22 November 2019 в 22:47
поделиться

Щелкните правой кнопкой мыши высшую иерархию, которую вы хотите восстановить >> Вернуть или Вернуть к версии

2
ответ дан 22 November 2019 в 22:47
поделиться

Синхронизация со старой версией и совершить это. Это должно помочь.

Вот также объяснение отмены изменений.

0
ответ дан 22 November 2019 в 22:47
поделиться

Стандартный способ использования слияния для отмены всей регистрации отлично работает, если вы этого хотите. Однако иногда все, что вам нужно сделать, это вернуть один файл. Нет законного способа сделать это, но есть хитрость:

  1. Найдите нужную версию с помощью svn log.
  2. Используйте подкоманду svn export:

    svn export http: // url-to -ваш-файл @ 123 / tmp / filename

(где 123 - номер редакции хорошей версии файла.) Затем либо переместите, либо скопируйте этот единственный файл, чтобы перезаписать старый. Зарегистрируйте измененный файл, и все готово.

27
ответ дан 22 November 2019 в 22:47
поделиться
Другие вопросы по тегам:

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