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 , который можно найти здесь:
а затем выбрав версию 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 , ваш текущий каталог не является рабочей копией.
Затем вам нужно сделать следующее:
- svn checkout ваш проект из репозитория в локальную рабочую копию (временный каталог).
- скопируйте ваши изменения в существующие файлы поверх рабочей копии
- svn commit эти изменения.
После этого переименуйте исходное местоположение проекта (где вы сейчас работали) и переместите на него рабочую копию. Теперь вы можете svn commit как обычно из вашей рабочей копии.
Если папка, которую вы сейчас используете, называется: /home/username/myproject , а рабочая копия называется /tmp/workingcopy . Затем вы можете ввести следующее:
- mv /home/username/myproject /home/username/myproject.old
- mv /tmp/workingcopy /home/username/myproject
Теперь продолжайте работу в /home/username/myproject , вы можете удалить myproject.old , если уверены, что весь ваш код находится в репозитории svn
Есть три способа интерпретировать ваш вопрос:
- У вас есть только файл в репозитории Subversion, и вы хотите изменить его содержимое
- У вас есть файл как в репозитории, так и на диске, изменения еще не внесены, и вы хотите изменить его содержимое в обоих местах
- У вас есть файл как в репозитории, так и на диске, файл на диске содержит изменения, и вы хотите обновить версию репозитория с этими изменениями.
Если первое, вам нужно сначала извлечь файл в рабочую копию на диске, а затем вы переходите к случаю 2.
Если второе, вам нужно изменить файл на диске с изменениями, а затем перейти к случаю 3.
Если третий, вам нужно зафиксировать изменения в репозитории.
Вы делаете это с помощью выбранного вами клиента Subversion. Если это командная строка, типичная команда выглядит так:
Однако настоящая проблема здесь в том, что вы не знаете, как использовать Subversion. Я бы нашел руководство по Subversion и поигрался с ним, создал временный репозиторий и поместил в него файлы, поигрался с командами фиксации, проверки, возврата, журнала и т. Д., Чтобы понять, как работает система.
Автоматическое обновление SVN для автоматизированных задач
Планировщик задач
Task Scheduler - это компонент, который поставляется вместе с Window
Документация Microsoft
Открытый метод
Способ 1: меню Пуск \ Панель управления \ Администрирование \ Планировщик задач
Способ 2: меню Пуск \ Все программы \ Стандартные \ Системные инструменты \ Планировщик задач
Здесь вы можете создать задачу и позволить ей делать то, что мы хотим сделать, как запланировано.
Обновите 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, которые должны быть обновлены одновременно,
Читайте также: