Svn как обновить файл

Обновлено: 02.07.2024

Это, вероятно, то, что имеет простое решение, но я, вероятно, вообще не разбираюсь в использовании Tortoise SVN.

У меня есть эта рабочая директива, которую я проверил некоторое время назад:

Теперь все, что я хочу сделать, это SVN UPDATE мой рабочий каталог только для файлов в /folder , но НЕ его подпапки. Как это сделать?

Помните, что в репозитории сервера SVN /folder теперь содержит новые файлы file3 , file4 , которые я хочу увидеть в рабочем каталоге после обновления SVN.

ИЗМЕНИТЬ, поскольку, возможно, это не ясно: вложенные папки НЕ ДОЛЖНЫ быть затронуты SVN во время обновления SVN, я не хочу, чтобы он касался их вообще. Я попытался использовать ответ Грега, но он не работает и ПРЕДУПРЕЖДЕНИЕ: подпапка1 и подпапка2 будут получать DELETED из вашей рабочей копии во время обновления.

ОТВЕТЫ

Ответ 1

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

Ответ 2

Вы можете сделать обновление SVN нерекурсивно, используя следующую команду:

Аргумент --depth может принимать следующие параметры: empty , files , immediates или infinity

Для этого с помощью графического интерфейса, а не командной строки, вы можете использовать Update to revision , который можно найти здесь:

alt text

alt text

а затем выбрав версию Head , вы можете указать, как рекурсивно это обновление:

В вашем случае выбор Immediate children, including folders будет наиболее подходящим.

Ответ 3

Вместо Update используйте TortoiseSVN Update to Revision . Укажите HEAD как ревизию для обновления (или любую другую ревизию, которую вы хотите обновить), а затем установите флажок "Только обновить верхнюю папку".

Решение Greg отлично работает, если вы выдаете команду SVN через TortoiseSVN или используете клиент SVN с командной строкой.

Рисунок 4.11. Окно выполнения, отображающее законченное обновление

Окно выполнения, отображающее законченное обновление


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

Различные действия, производимые при обновлении, в окне выполнения обозначаются разным цветом:

Новый элемент, добавленный к вашей рабочей копии.

Избыточный элемент, удалённый из вашей рабочей копии, или отсутствующий элемент, заменённый в вашей рабочей копии.

Изменения из хранилища, успешно слитые с вашими локальными изменениями.

Изменения из хранилища, вызвавшие при слиянии с локальными изменениями конфликт, который вы должны уладить.

Неизменённый элемент в вашей рабочей копии, обновлённый новой версией из хранилища.

Это используемая по умолчанию цветовая схема, но вы можете настроить эти цвета в диалоге настроек. Для дополнительной информации смотрите «Настройки цветов в TortoiseSVN».

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

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

Стандартная команда Обновить не имеет параметров и просто обновляет вашу рабочую копию до ревизии HEAD хранилища, что является наиболее часто используемым вариантом. Если вы хотите больше управлять процессом обновления, то должны использовать вместо этого TortoiseSVN → Обновить до ревизии. . Это позволит вам обновить вашу рабочую копию до определённой ревизии, а не только до последней. Представим, что ваша рабочая копия имеет ревизию 100, но вы хотите воспроизвести состояние, которое она имела в ревизии 50. Тогда просто обновите до ревизии 50.

В том же диалоге вы можете выбрать глубину, до которой обновить текущую папку. Используемые термины описаны в xref linkend="tsvn-dug-checkout-depth"/>. Глубина по умолчанию — это Рабочая копия , которая хранит настройки существующей глубины. Вы также можете установить глубину постоянной , это означает что последующие обновления будут использовать эту новую глубину, т. е. эта глубина используется по умолчанию.

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

Вы также можете выбрать игнорировать ли любые внешние проекты при обновлении (т. е. проекты использованные с помощью svn:externals ).

Внимание

После того, как вы обновили файл или папку до нужной ревизии, вы не должны делать изменения в этих файлах. Вы получите ошибку « устарел » при попытке их зафиксировать! Если вы хотите отменить изменения в файле и начать заново с ранней ревизии, вы можете откатиться к предыдущей ревизии в диалоге журнала ревизий. Для дополнительных инструкций и других возможных методов, ознакомьтесь с «Возвратиться к старым ревизиям в хранилище (откат)».

Обновить до ревизии может иногда пригодиться для просмотра того, как выглядел ваш проект в какой-то более ранней точке его истории. Но, вообще говоря, обновление отдельных файлов до более ранних ревизий является не очень хорошей идеей, поскольку приводит вашу рабочую копию в противоречивое состояние. Если обновляемый файл был переименован, вы можете даже обнаружить, что он просто исчез из вашей рабочей копии, потому что в более ранней ревизии не существовало файла с таким именем. Обращаем ваше внимание также на то, что на таком элементе показывается обычная зелёная пометка, и он неотличим от файлов, которые находятся в актуальном состоянии.

Если вам нужна просто локальная копия старой ревизии файла, лучше использовать команду Контекстное меню → Сохранить ревизию в. из диалога журнала для этого файла.

Несколько файлов/папок

Если выбрать несколько файлов и папок в Проводнике, и затем выполнить команду Обновить , все эти файлы/папки будут обновляться по очереди. TortoiseSVN обеспечивает, чтобы все файлы/папки из одного хранилища обновлялись точно до одной ревизии!, - даже если между этими обновлениями была выполнена другая фиксация.

Может кто подскажет команду для обновления файла в репозитории SVN. Файл уже импортирован, я просто хочу внести изменения.

Это файл main.css и путь к файлу /home/weblab/public_html/cake_1_2/app/webroot/css .

Может ли кто-нибудь дать мне точную команду?

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

Чтобы проверить это, запустите svn info из каталога, в котором находится ваш код. Если он говорит: svn: '.' is not a working copy , ваш текущий каталог не является рабочей копией.

Затем вам нужно сделать следующее:

  1. svn checkout ваш проект из репозитория в локальную рабочую копию (временный каталог).
  2. скопируйте ваши изменения в существующие файлы поверх рабочей копии
  3. svn commit эти изменения.

После этого переименуйте исходное местоположение проекта (где вы сейчас работали) и переместите на него рабочую копию. Теперь вы можете svn commit как обычно из вашей рабочей копии.

Если папка, которую вы сейчас используете, называется: /home/username/myproject , а рабочая копия называется /tmp/workingcopy . Затем вы можете ввести следующее:

  1. mv /home/username/myproject /home/username/myproject.old
  2. mv /tmp/workingcopy /home/username/myproject

Теперь продолжайте работу в /home/username/myproject , вы можете удалить myproject.old , если уверены, что весь ваш код находится в репозитории svn

Есть три способа интерпретировать ваш вопрос:

  1. У вас есть только файл в репозитории Subversion, и вы хотите изменить его содержимое
  2. У вас есть файл как в репозитории, так и на диске, изменения еще не внесены, и вы хотите изменить его содержимое в обоих местах
  3. У вас есть файл как в репозитории, так и на диске, файл на диске содержит изменения, и вы хотите обновить версию репозитория с этими изменениями.

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

Если второе, вам нужно изменить файл на диске с изменениями, а затем перейти к случаю 3.

Если третий, вам нужно зафиксировать изменения в репозитории.

Вы делаете это с помощью выбранного вами клиента Subversion. Если это командная строка, типичная команда выглядит так:

Однако настоящая проблема здесь в том, что вы не знаете, как использовать Subversion. Я бы нашел руководство по Subversion и поигрался с ним, создал временный репозиторий и поместил в него файлы, поигрался с командами фиксации, проверки, возврата, журнала и т. Д., Чтобы понять, как работает система.

Автоматическое обновление SVN для автоматизированных задач

Планировщик задач

Task Scheduler - это компонент, который поставляется вместе с Window

image

Документация Microsoft

Открытый метод

Способ 1: меню Пуск \ Панель управления \ Администрирование \ Планировщик задач

Способ 2: меню Пуск \ Все программы \ Стандартные \ Системные инструменты \ Планировщик задач

image

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

Обновите SVN автоматически

Использование TortoiseSVN TortoiseProc.exe обновляет SVN,

tortoisesvn API

Код реализации

Обновление svn.bat

1. Создайте файл bat и назовите его: Обновление SVN.bat , Содержание выглядит следующим образом:

Создать запланированное задание.

2. Создайте другой файл bat и назовите его: Создать запланированное задание .bat. Содержание выглядит следующим образом

Как бегать

3. Поместите летучую мышь, созданную в 1,2, в ту же директорию и измените ее в каталог установки SVN и TortoiseSVN.

Двойной клик Создать запланированное задание .bat, Посмотрите, была ли задача успешно создана в планировщике задач

Возможные проблемы

4, двойной щелчок Обновление SVN.bat Проверьте, можно ли нормально обновлять SVN, если оно появляется Two top-level reports with no target или SVN пропустить Ошибка не может обновить SVN.

Пожалуйста, проверьте правильность пробелов в файле bat. Поместите bat вне каталога SVN и попробуйте снова.

Обновите несколько библиотек SVN одновременно

Если есть несколько библиотек SVN, которые должны быть обновлены одновременно,

Читайте также: