Установка и использование Tortoise SVN
5.1- Import данных в Repository
Сначала, нужно чтобы член команды поделился исходными данными в
SVN Repository. Если нет данных, то этот шаг может быть пропущен.
Предположим я
import (импортирую) файлы данных из папки
Documents в
SVN Repository:
На
Visual SVN создан
Repository с названием
WorkingDatas.
See more:
Copy URL:
Скопируйте URL содержащий название сервера SVN.
- https://TRAN-VMWARE/svn/WorkingDatas/
Вы можете изменить название сервера используя адрес IP.
Нажмите на правую мышь в папку
Documents, выберите:
Введите
URL в
SVN Repository.
- https://TRAN-VMWARE/svn/WorkingDatas/
Данные
import (имопртированы) в
SVN Repository.
Смотрите в
Visual SVN:
5.2- Checkout
Все члены команды сделают
checkout данных из
SVN Repository в свой компьютер, включая человека, который сделал
import исходных данных в
SVN Repository.
На компьютере членов команды, создать пустую папку и сделать
checkout данных из
SVN Repository в ту папку. Данная папка будет рабочей папкой каждого члена команды на его компьютере.
Данные получены.
5.3- Commit и Update
Checkout это извлечение всех общих данных в
Repository в локальный компьютер в первый раз. Потом данные изменены на локальном компьютере. Передача модифицированных данных в
Repository называется
Commit. И обновление измененных данных называется
Update.
Теперь мы изменим (или добавим) файл в папку и используем функцию
Commit.
Например я изменю файл
TeamNote.txt и сохраняю, тогда изменится знак
SVN этого файла, оповещая, что файл был изменен.
Далее я создаю новый файл
TeamTodo.txt. Символ нового файла содержит знак вопроса (?), оповещая, что это новый файл и не управляется в
SVN.
Файл SVN, который содержит измененные данные так же изменит свой знак.
Чтобы
Commit данные в
SVN Repository, нажмите на правую мышь на файл или папку, выберите
SVN Commit…
Выберите файл для
commit в списке.
- По умолчанию Tortoise SVN автоматически выбирает измененные файлы.
Update:
Другие члены команды могут
Update (обновлять) новейшие данные из
SVN Repository.
Туториал по консольному svn на русском
?
LiveJournal
- Main
- Ratings
- Interesting
- iOS & Android
Disable ads
Login
- Login
CREATE BLOG
Join
English
(en)
SVN для чайников. Часть III.
При работе над проектом, основное внимание уделяется основному направлению разработки (trunk). Т.е. это текущее состояние проекта. Папки и файлы из trunk используются для отладки и тестирования проекта по месту.
Часто возникают ситуации, когда нужно вести две и более копий одного документа или проекта, отличающиеся между собой деталями. В этом случае если в проекте будет найдена общая ошибка в любой из копий, она потребует исправления во всех копиях.
Также часто возникают ситуации, когда при работе над проектом, появляется мысль, реализация и проверка которой займет больше чем день. В этом случае работа в основной ветке может привести к получению нерабочего проекта в ней или к созданию помех коллегам, которые работают вместе с вами над проектом.
Очень распространенная ситуация это создание готовых слепков — релизов проекта. Т.е. сохранения состояния проекта в отдельное место, после которого файлы проекта в этом месте меняться не будут. Можно это сделать с помощью команды Export и хранения проекта в специальном месте, но в этом случае история проекта, которая храниться в SVN, будет оторвана от релиза. И если в релизе будут найдены ошибки, которые не были замечены ранее, потребуется вручную их поправить во всех копиях проекта.
Основная идея ветвления — это создание направления разработки (ветки), которое существует независимо от другого направления, но имеет с ним общую историю. В SVN есть команды, которые помогают сопровождать параллельные ветки файлов и каталогов. Они позволяют создавать ветки, копируя данные и запоминая, что копии связаны друг с другом. Кроме того, эти команды помогают дублировать изменения из одной ветки в другую. Наконец, они могут сделать так, что отдельные части рабочей копии будут отражать состояние различных веток, что позволит вам смешивать различные линии разработки.
Репозиторий SVN это обычное хранилище файлов и папок. Хранить проекты в нем можно как вам будет угодно. Но если уж использовать SVN, то нужно использовать его правильно. Правила хорошего тона призывают использовать следующую структуру оформления проектов в репозитории SVN:
./ корневой каталог репозитория Project0 branch ветки проекта Project0 tag метки (ревизии) проекта Project0 trunk ствол (основное направление разработки) проекта Project0 Project1 branch ветки проекта Project1 tag метки(ревизии) проекта Project1 trunk ствол (основное направление разработки) проекта Project1
Важное замечание. При создании ветки информация не копируется. Любая ветка это всего лишь ссылка на файлы с определенным номером ревизии в репозитории. «Экономить» объем, который занимает репозиторий на жестком диске, совершенно бессмысленное занятие.
Совет. Помните trunk/branch/tag это самые обычные папки, они не предписывают и не ограничивают использование репозитория SVN. Эти папки всего лишь помечают место, которое отводиться разработчику для работы над проектом. Т.е. папка branch это всего лишь рекомендованное место, где разработчик может проводить свои изыскания, папка tag это рекомендованное место для хранения релизов проекта. Никто не запрещает вам хранить релизы и проводить изыскания в других папках репозитория, но для упорядочивания репозитория лучше придерживаться правил хорошего тона.
Рассмотрим основные ситуации, возникающие при работе с ветвлениями.
Создание меток и веток (tag и branch)
Вернемся опять к нашим разработчикам Васе и Пете. Они закончили свой проект и теперь решили выпустить метку (tags) – релиз данного проекта под номером 1.0. Для этого нужно воспользоваться командой Branch/Tag (рис. 61).
Затем нужно указать полное имя места назначения метки и номер ревизии основного проекта для которого создается метка. В данном примере метка создается в папке tags/release_1. 0 и источником является последняя ревизия проекта demo_project1 находящаяся в репозитории(рис. 62).
Создание ветки производится точно таким же образом, но ветки создаются в директории branch (рис. 63). После этих действий состояние репозитория следующее (рис. 64).
Рис. 61. Создание ветки/метки проекта в репозитории
Рис. 62. Диалоговое окно выбора настроек создания метки проекта
Рис. 63. Диалоговое окно выбора настроек создания ветки проекта
Рис. 64. Состояние репозитория после создания метки и ветки проекта
Важное замечание. Перед тем как делать ответвление от проекта обязательно синхронизируйте свою рабочую копию с репозиторием командой Update. Но если вы внесли множество изменений в основную ветку и не хотите их фиксировать в основной ветке (например, проект не отлажен), то можно сделать branch, опираясь на состояние рабочей копии, а не репозитория. В этом случае будет создана ветка, в которой будут зафиксированы все изменения.
Подсказка. Если вы выпустили релиз проекта, а в нем обнаружена ошибка, не устраняйте ее метках (tags). Используйте один из двух вариантов.
- Если нужно только устранить ошибку, то скопируйте метку(tag) в ветку (branch). Устраните ошибку, сделайте новую метку, удалите ветку.
- Если устранение ошибки совмещено с модернизацией проекта, то выпустите новый релиз проекта.
Подсказка. Узнать к какому репозиторию, проекту и ветке относиться папка/файл можно из свойств папки/файла, которая находиться под контролем репозитория.
Переключение рабочей копии между ветками
Переключение между любыми ветвлениями выполняется командой Switch (рис. 65). В качестве параметра нужно указать путь к проекту в репозитории, на который нужно сделать переключение рабочей копии (рис. 66). При работе с командой Switch нужно помнить о следующем:
- Файлы, которые находятся под контролем SVN, при переключении ветки заменяются на соответствующие файлы из другой ветки. Если файл присутствует только в одной из веток, то соответственно он будет автоматически удаляться и появляться (это нормальная работа данной команды, нет повода для беспокойства).
- Изменения в рабочей копии обладают приоритетом перед состоянием файлов в репозитории. Если перед переключением вы их не зафиксировали, они останутся в рабочей копии. Если переключения происходят часто, то можно случайно зафиксировать эти изменения не в ту ветку разработки.
Рис. 65. Переключение рабочей копии на другую ветку разработки
Рис. 66. Диалоговое окно выбора ветки на которую нужно переключиться
Важное замечание. При работе с ветвлениями проверяйте, куда именно вы фиксируете изменения, что бы не «потерять» их.
Слияние ветвлений
В процессе работы над ветвлениями проекта возникают ситуации, когда нужно слить изменения, сделанные в одной из веток проекта с изменениями в других ветках или просто добавить изменения, сделанные в ветке (например, новые функции) в другие ветки.
Эти действия в SVN выполняются с использованием команды Merge. Слить ветки можно только в рабочей копии одной из веток. При этом результат слияния будет в рабочей копии и в случае ошибок слияния этот результат можно отменить командой Revert.
При слиянии веток естественно возникает множество конфликтов, подобных конфликтам, которые были рассмотрены в разделе работы с рабочей копией. Все эти конфликты придется разрешать в ручную. Поэтому не стоит допускать так называемого «большого расхождения» веток разработки, т.к. в этом случае слияние веток становиться сложным и запутанным процессом, который может привести к нежелательному результату.
При слиянии веток нужно помнить о следующем:
- При обычном слиянии файл не замещается другим файлом. Файл рассматривается как набор строк. Итоговый файл составляется из строк файлов, которые участвовали в процессе слияния. Поэтому если бинарный файл будет обрабатываться как текстовый, то результирующий файл будет не работоспособен.
- Переименование файла в SVN реализовано через механизм Copy/Delete поэтому новый файл логически не связан со старым (кроме общей истории). И после слияния веток в проекте будут оба файла. Избегайте необдуманного переименования файлов и учитывайте переименование при слияниях.
Рассмотрим процесс слияния demo_project1 и его ветки demo_branch. Положим, что Вася работает с веткой demo_branch, вносит изменения в файл hello.py и добавляет к проекту файл define.py. Петя в свою очередь работает в основной ветке разработки trunk и вносит изменения в файлы hello.py и bye.py. Перед слиянием состояние рабочих копий Васи и Пети следующее (рис. 67).
Вася и Петя фиксируют изменения в репозитории. Вася сообщает Пете, что закончил тестирование новых функций проекта, для которого он сделал ветку. Петя, который работает в основной ветке разработки, решает сделать слияние веток (рис. 68). SVN предлагает 3 возможных сценария слияния веток (рис. 69). Для рассмотрения разницы этих сценариев положим что А это ветка-приемник, в рабочей копии которой делают слияние, В это ветка-источник с которой делают слияние. Сценарии слияния веток:
- Merge a range of revisions — этот сценарий работает следующим образом. SVN берет начальное и конечное состояние ветки В, вычисляет последовательные изменения в файлах этой ветки и последовательно применяет эти изменения на файлы ветки А. Если эти изменения вызовут конфликт, то его нужно будет разрешить, в противном случае произойдет слияние файлов.
- Reintegrate a branch — этот сценарий работает следующим образом. SVN берет текущее состояние веток А и В, вычисляет какие файлы нужно изменить для того что бы из А получить В и сравнивает эти файлы. Если в этих файлах возникает конфликт, то его нужно будет разрешить, в противном случае произойдет слияние файлов.
- Merge two different trees — самый простой и в то же время опасный сценарий слияния. Данный вид слияния работает следующим образом. SVN берет текущее состояние веток А и В, вычисляет какие файлы нужно изменить для того что бы из А получить В, делает эту замену в рабочей копии через механизм Delete/Copy. В этом случае не возникает никаких конфликтов, но если в А были какие либо изменения то они пропадут.
В нашем случае Петя выбирает второй вариант сценария и указывает делать слияние с веткой demo_branch (рис. 70). Результат работы команды Merge (рис. 71). Естественно при слиянии возникли конфликты, которые нужно разрешить (рис. 72).
После разрешения конфликтов Петя фиксирует изменения в репозитории и обязательно комментирует свои действия (рис. 73). Как разрешаются конфликты в SVN мы рассматривали в разделе работы с рабочей копией. Всё, слияние ветки demo_branch с основной веткой разработки выполнено.
Рис. 67. Состояние рабочих копий веток Пети и Васи перед слиянием веток
Рис. 68. Слияние веток в рабочей копии Пети
Рис. 69. Диалоговое окно выбора сценариев слияния веток
Рис. 70. Диалоговое окно выбора ветки источника для слияния
Рис. 71. Окно протокола слияния веток проекта
Рис. 72. Состояние рабочей копии Пети после слияния веток
Рис. 73. Диалоговое окно для задания комментария при фиксации результат слияния меток.
Установка и русификация Tortoise SVN
TortoiseSVN работает под операционной системой Windows XP (c Service Pack 3) или выше, и доступен как в 32-битной, так и в 64-битной версии. Установщик для 64-битной Windows также включает 32-битную часть. Что означает что вы не должны устанавливать 32-битную версию отдельно чтобы контекстное меню и оверлей TortoiseSVN работало в 32-битных приложениях.
Где получить Tortoise SVN?
Для скачивания Tortoise SVN необходимо перейти на официальный сайт проекта расположенный по адресу http://tortoisesvn.net/downloads.html. На главной странице доступны две ссылки для 32-х и 64-х битной версии продукта (рис 1):
Рисунок 1 |
Нажимаем на необходимую ссылку (зависит от разрядности вашей платформы) и нас перенаправляет на сайт http://sourceforge.net (рис 2)
Рисунок 2 |
Дожидаемся окончания отсчета таймера (красная стрелка) и перед вами появится стандартный диалог сохранения файла. Укажите путь куда вы хотите сохранить установочный файл и нажмите ОК. Если диалог для сохранения не появился попробуйте повторить попытку выбрав другое зеркало для скачивания (синяя стрелка).
После окончания загрузки у вас на жестком диске будет лежать исполняемый файл TortoiseSVN.
Установка Tortoise SVN.
Запустите двойным щелчком исполняемый файл, который вы только что скачали. Перед вами должно появиться следующее окно (рис 3). Здесь разработчики приветствуют вас и предлагают начать установку нажав на кнопку Next. Чтож так и сделаем, жмем Next.
Рисунок 3 |
На следующем шаге приводится текст лицензионного соглашения, его необходимо прочитать и принять если вы желаете пользоваться программой или отклонить если оно вас не устраивает и вы хотите отменить установку (рис 4). Если все вас устраивает ставим переключатель на пункт I accept the terms in the License Agreement и нажимаем Next.
Рисунок 4 |
На следующем шаге (рис 5) у нас имеется возможность отключить ненужные нам компоненты. Получить описание каждого компонента можно нажав на его название и увидев справа в блоке Feature Description краткую характеристику. Выставляем нужные настройки и нажимаем Next.
Рисунок 5 |
На следующем шаге (рис 6) нам сообщают что все готово к установке и если вы вдруг что то забыли настроить или еще раз хотите проверить свои настройки но можете нажать Back. А для установки необходимо нажать Install, что мы и делаем.
Рисунок 6 |
Начинается процесс установки (рис 7).
Рисунок 7 |
После окончания установки вы увидите финишное окно (рис 8). Здесь разработчики говорят что установка закончена и вы можете начать пользоваться Tortoise SVN нажав на кнопку Finish. Также вы можете поддержать разработчиков нажав на кнопке Donate!.
Рисунок 8 |
На этом установка клиента TortoiseSVN закончена.
Русификация TortoiseSVN.
Для получения файла перевода необходимо перейти на сайт проекта http://tortoisesvn.net/downloads.html и найти раздел Language Pasks (рис 9)
Рисунок 9 |
Напротив русского языка находится несколько ссылок:
- русификатор для 32-х битной версии
- русификатор для 64-х битной версии
- руководство по TortoiseSVN в PDF формате
- руководство по TortoiseMerge в PDF формате
Нажимаем на ссылку русификатора удовлетворяющего нашим требованиям (должен совпадать с установленной версией TortoiseSVN) и нас опять перенаправляет на сайт http://sourceforge.net. Действия по скачиванию абсолютно идентичны описанным выше.
После загрузки русификатора к себе на компьютер запустим двойным щелчком исполняемый файл. Перед нами появится диалог установки русского пакета (рис 10). Тут уже все по русски, так что читаем и жмем Далее.
Рисунок 10 |
Программа установки начинает копирование файлов на наш компьютер (рис 11).
Рисунок 11 |
После завершения установки появится окно (рис 12) в котором необходимо нажать кнопку Готово.
Рисунок 12 |
Нажимаем правой кнопкой на в любом пустом месте рабочего стола и в контекстном меню выбираем TortoiseSVN->Settings (рис 13).
Рисунок 13 |
В настройка во вкладке General в разделе TortoiseSVN->Language выбираем русский (Россия) (рис 14). Сохраняем изменения и получаем русскую версию TortoiseSVN.
Рисунок 14 |
Для стабильной работы необходимо перезагрузить компьютер! Теперь все готово к работе.
Подключение TortoiseSVN к svn-репозитарию в Internet через прокси.
При совместной работе над проектом, хранящимся в репозитарии SubVersion где то в сети, часто возникает вопрос, как организовать рабочий процесс. В этой заметке постараюсь ответить на вопрос: как настроить клиент subversion под Windows для доступа к репозитарию исходников.
Качаем последнюю версию клиента TortoiseSVN (msi) для своей платформы (32/64). Ставим, перегружаемся. запускаем виндовый експлорер, создаем новую пустую папку для локальной копии дерева исходников в подходящем месте.
В експлорере нажатием правой клавишей мыши на папке открываем контекстное меню, TortoiseSVN->Repo-browser.
В поле url вводим (например): http://svn2.assembla.com/svn/имя_проекта должно появиться окно запроса логина/пароля.
Вводим свои данные, можно отметить крыжик «сохранить данные аутентификации» для того чтобы каждый раз не вводить их заново.
Данные будут сохранены в «%Documents and Settings%\%user%\Application Data\Subversion\auth\svn.simple\»
Открывая узлы появившегося тривью, выбираем узел «trunk», правая клавиша мыши, checkout.
В поле «Checkout directory» вводим путь до ранее созданной пустой папки, ok.
Содержимое репозитария скачается в эту папку и создастся дерево каталогов.
Каталоги с именем «.svn» являются служебными каталогами клиента subversion, их удалять нельзя!
Правим исходники, компилим, тестим, чекиним. Подробнее о клиенте TortoiseSVN смотри здесь.
Если выход в инет идет через прокси, то клиента нужно настроить на использование прокси.
Из контекстного меню виндового експлорера выбираем TortoiseSVN->Settings.
В левом тривью выбираем Network, слева отмечаем крыжик «Enable Proxy Server» и заполняем необходимые поля.
Есть одна проблема при использовании прокси с NTLM авторизацией. TortoiseSVN не может работать через такой прокси. Проблема решается установкой на локальной машине промежуточного прокси. Точно работает вариант с cntlm. Качаем, ставим. В файле настроек указываем домен, пользователя, пароль, адрес:порт прокси с NTLM авторизацией. Для TortoiseSVN в качестве прокси указываем адрес установленного cntlm. Обычно это 127.0.0.1:3128
При работе через прокси может возникать еще одна проблема: доступ для чтения работает, а при попытке commit выдается сообщение об ошибке типа:
«… MKACTIVITY ….. Could not parse response status line …»
Для сквида лечиться добавлением в /etc/squid/squid.conf строчки:
extension_methods REPORT MERGE MKACTIVITY CHECKOUT
и его перезапуском. Как для других проксей — не знаю. Подробности смотри здесь.
Если нужно работать с несколькими репозитариями svn, причем с одними — без прокси, с другими — через прокси, с третьими — через другой прокси и т.д., делаем следующее.
Из контекстного меню виндового експлорера выбираем TortoiseSVN->Settings.
В левом тривью выбираем Network, слева снимаем крыжик «Enable Proxy Server».
Жмем кнопку «Edit» напротив поля «Subversion server file:», читаем комментарии в этом файле, настраиваем его под свои нужды и сохраняем.
Мои настройки для доступа к assembla и google в этом файле выглядят так:
[groups]
google = *.googlecode.com
assembla = *.assembla.com
[assembla]
http-proxy-host = proxy
http-proxy-port = 3128
http-proxy-username = ProxyUserName
http-proxy-password = ProxyUserPass
http-timeout = 5
[google]
http-proxy-host = proxy
http-proxy-port = 3128
http-proxy-username = ProxyUserName
http-proxy-password = ProxyUserPass
http-timeout = 5
соответственно вместо ProxyUserName и ProxyUserPass подставить свои логин/пароль к прокси (а не к репозитарию!)
DVCS Git и TortoiseGit в картинках. Пособие для начинающих чайников. – Delphi в Internet
Что такое git? git – это распределенная система управления версиями.
Не так давно проект “Google API в Delphi” успешно переехал на новый адрес и теперь находится под управлением распределенной системы контроля версий Git. Для чего и почему мы это сделали – это вопрос второстепенный, а вот работа с Git, по крайней мере для меня, стала основной. По сути этот пост ни что иное как шпаргалка для себя любимого по выполнению основных операций при работе Git, но может эта шпаргалка поможет кому-то как и мне начать работу с этой DVCS.
Если Вы работаете в Delphi, то в этой статье представлено пошаговое руководство по настройке и работе с Git непосредственно из IDE Delphi
Небольшое введение. О чем вообще пойдет речь
Git — распределённая система управления версиями файлов. Проект был создан Линусом Торвальдсом для управления разработкой ядра Linux.
То обстоятельство, что система создавалась “под Linux” уже как бы намекает на то, что без консоли нам не обойтись. Но не стоит махать руками и кричать “консоль отстой, git – в печь” и все такое. Поверьте – консоль Linux и консоль Windows имеют для обычного пользователя только одно общее свойство – чёрный экран при первом запуске. Команды Linux (ИМХО) просты и запоминаются без проблем, а работать с консолью не составляет особого труда даже для такого чайника, как я.
Самым главным, на мой взгляд, отличием Git от того же SVN является то, что в Git нет такого понятия как главный репозиторий. Каждый разработчик использует свою локальную версию репозитория, в которую делает commit’ы и, при необходимости, синхронизирует все изменения с репозиторием, располагающимся на сервере.
Это обстоятельство и поставило меня в начале работы с Git в тупик.
Как это так commit и не в центральный репозиторий?
Как правильно отправлять данные на сервер?
Как вообще начинать работу?
Эти и ещё многие другие вопросы посещали меня на старте работы с Git. Сейчас я не буду углубляться далеко в теоретические вопросы Git, да и вообще любых систем контроля версия – всего этого полно в Сети. А затрону один практический момент – как начать работу вообще, чтобы потом не было мучительно больно за бесцельно потерянные исходники.
Качаем и устанавливаем софт
Для работы с Git под Windows имеются вполне работоспособные и юзабельные решения, например, msysgit. Однако если Вы ранее имели опыт работы с SVN и использовали в работе TortoiseSVN, то видимо, Вам захочется иметь аналог подобного интерфейса и для Git? Нет проблем вот аналог TortoiseSVN для Git – TortoiseGit.
По сути TortoiseGit после нажатия команды из контекстного меню запускает консольную команду из MSysGit и рисует в окошко ее вывод. Если вы не хотите или просто не хватает времени детально разобраться в консольных командах Git, то TortoiseGit – то, что Вам нужно.
Итак, если Вы работаете под 32-х битной Windows, то Вам необходимо скачать следующий софт:
- msysgit – качаем
Git-1.7.1-previewXXXXXXXX.exe (11,6 Mb)Git For Windows - TortoiseGit. На момент написания статьи последней была версия TortoiseGit-1.5.2.0-32bit.msi (19.6 MB). Новые версии Вы можете найти также по приведенной ссылке.
Получается, что скачать нам надо чуть больше 30 Mb.
Теперь устанавливаем скачанные программы.
Вначале ставим msysgit, а потом TortoiseGit.
При установке msysgit настройки по умолчанию можно не изменять.
При установке TortoiseGit выбираем в окне “Choose SSH Client” второе значение:
После успешной установки обоих продуктов работу над первым этапом можно считать завершенной. Приступим ко второму – получение доступа к репозиторию Git.
Получаем доступ к репозиторию
В качестве примера я буду рассматривать получение доступа к нашему репозиторию, который располагается на github.com.
Распишем все операции по шагам.
1. Регистрация на GitHub’e.
Эта операция не отличается абсолютно ничем от всех прочих регистраций на других сайтах. Единственное, что нам необходимо обязательно запомнить – адрес email который мы указывали при регистрации. Этот адрес можно видеть на главной странице своего профиля:
Профиль на GitHub.com
2. Генерируем ключ для доступа по SSH.
Вот тут хочешь-не хочешь, а надо запускать консоль. После установки msysgit у Вас на рабочем столе появился новый ярлык – Git Bush – вот с помощью него и запускаем консоль.
- Набираем в консоли следующую команду
ssh-keygen -t rsa -C “E-Mail из Вашего профиля”
- На экране появится запрос “Enter file in which to save the key”. Пока оставим значение по умолчанию. Жмем Enter.
- Нас попросят ввести пароль. Эту часть тоже пропускаем – впоследствии пароль можно будет установить, а пока – учимся. Жмем опять Enter.
- Сгенерируются два файла один из которых – публичный ключ для доступа.
Если Вы все делали с настройками по умолчанию то файлы будут располагаться в директории:
C:/Documents and Settings/UserName/.ssh/
Заходим в директорию, открываем с помощью “Блокнота” файл ida_rsa.pub и копируем все его содержимое в буфер обмена.
3. Заносим публичный ключ доступа в профиль.
Для записи публичного ключа в профиль:
- Заходим в свой профиль github и жмем ссылку Account Settings (сверху)
- Выбираем пункт “SSH Public Keys”
- Жмем ссылку “Add another public key”
Перед вами появится форма добавления нового публичного ключа. Вставляем из буфере весь скопированный ранее текст (из файла ida_rsa.pub) только в поле key – поле Title оставляем пустым.
На этом работа с публичными ключами закончена.
4. Просимся в проект.
Для этого достаточно найти наш проект на github и отправить одному из администраторов запрос на предоставление доступа к репозиторию. Или просто отправить мне email с логином на github. После того как вы будите записаны в список разработчиков проекта можно переходить к следующей фазе работы – получение исходников.
Работа со своим первым репозиорием Git
Доступ получен, исходники в Вашем распоряжении. Теперь переключаемся на работу с TortoiseGit. Для порядка, каждую из операций, которые мы будем сейчас выполнять я буду также записывать в виде консольной команды – лишним знание работы с консолью никогда не будут.
Итак, выбираем директорию на жестком диске где мы будем хранить все файлы. Далее действуем следующим образом:
1. Вызываем контекстное меню и выбираем пункт “TortoiseGit — Settings“:
В появившемся окне переходим сразу к пункту “Git – Config” и записываем свое имя и адрес электронной почты. Эти данные должны в точности совпадать с теми, что записаны в Вашем аккаунте на github, иначе ваш ключ просто не подойдет.
2. Клонируем репозиторий. Для этого заходим на страницу проекта, и копируем в буфер адрес:
Теперь жмем правой кнопкой мыши на директории, в которой будем хранить исходники и в меню выбираем “Git Clone..“:
В открывшемся окне в поле URL вставляем скопированный адрес и жмем “Ok”:
Начнется процесс клонирования репозитория.
Всё вышесказанное можно было бы заменить всего двумя командами в консоли:
cd path/to/dir
git clone URL
После клонирования репозитория Вы автоматически переключитесь на нашу главную ветку (master). Так как каждый из нас занят определенной работой в проекте, то у каждого своя ветвь в репозитории, поэтому и Вам придется создавать свой branch. Делается это достаточно просто.
3. Создаем свою ветку. Для этого жмем правую кнопку мыши на директории в которую мы клонировали репозиторий и выбираем в меню “TortoiseGit — Create Branch“:
В открывшемся оке задаем название новой ветки и указываем на основании какой ветки репозитория мы будем создавать новую. Жмем “Ок”, подтверждая создание ветки. Теперь переключаемся на свой новый branch.
Выбираем в меню “TortoiseGit – Switch/Checkout…“:
В открывшемся окне выбираем нашу новую ветку и жмем “Ок”. Убеждаемся, что мы успешно переключились:
По сути, все что касалось создания нового branch’a в консоли решилось бы всего одной командой:
checkout -b new-branch
4. Программируем. Теперь, когда мы все настроили – открываем необходимый проект в Delphi, вносим свои коррективы, изменяем модули и т.д. В общем ведем нормальную плодотворную работу с проектом.
5. Вносим изменения в репозиторий. После того как внесены какие-то изменения нам необходимо их закрепить в Git. И здесь опять же проявляется отличие этой системы контроля версий от того же SVN. Дело в том, что Commit в Git не сбрасывается сразу на сервер. Для того, чтобы внести изменения в удаленный репозиторий используется команда PUSH. В общем виде работа может быть построена следующим образом:
1. Вносятся изменения в проект
2. Изменения закрепляются в вашем локальном репозитории, используя команду Commit в меню или, используя консоль:
git commit
3. Когда Вам необходимо/удобно/требуется закрепить все изменения на сервере выполняем push в свою ветку (brunch). Команда консоли выглядит так:
git push origin <свое имя бранча>
Здесь стоит, наверное рассмотреть весь процесс на деле. К примеру, мы решили добавить в проект простой текстовый файл с описанием чего либо. Создаем файл, записываем в него данные и добавляем файл в индекс.
Для этого выбираем новый файл, вызываем меню и выбираем “Add…”:
По рисунку можно видеть, что я вношу в индекс новый файл text.txt. Жмем “Ok”.
После того как файл добавлен, можно сразу же сделать Commit – кнопка Commit появится в окне с выводом консоли. Жмем её и откроется окно для внесения Commit’a:
Заполняем поле с описанием, жмем “Ок” и коммит готов. Если хотите сразу отправить эти изменения в репозиторий, то в окне с выводом консоли появится также кнопка PUSH. Если же Вас не устраивает таскать по 1 файлику туда-сюда или изменения столь незначительны, что их нет смысла отправлять на сервер, то просто продолжаете дальше кодить, а push выполним позднее.
Чтобы выполнить команду push можете поступить следующим образом:
1. Зажимаем Shift и вызываем контекстное меню. В меню должны появится дополнительные команды:
Выбираем команду Push. Перед Вами откроется окно следующего содержания:
Все, что от Вас требуется на данном этапе – нажать на кнопку (на рисунке она выделена красным) найти в списке удаленную ветку в которую вы делаете push и два раза нажать Ok. Все изменения, произведенные Вами в локальном репозитории отправятся в Сеть.
Вот пожалуй все, что мне пока потребовалось использовать при работе с новой для меня системой контроля версий. Надеюсь эта мини-шпаргалка поможет кому-нибудь кроме меня. А если Вас заинтересовала работа с консолью, то как раз сейчас я изучаю Вот такие топики на habrahabr.ru:
1. Git Workflow.
2. Git Wizardry
Статьи написаны понятным простым языком и касаются как раз работы с Git с нуля.
Книжная полка
Описание: Рассмотрены практические вопросы по разработке клиент-серверных приложений в среде Delphi 7 и Delphi 2005 с использованием СУБД MS SQL Server 2000, InterBase и Firebird. Приведена информация о теории построения реляционных баз данных и языке SQL. Освещены вопросы эксплуатации и администрирования СУБД. | ||
Описание: Рассмотрены малоосвещенные вопросы программирования в Delphi. Описаны методы интеграции VCL и API. Показаны внутренние механизмы VCL и приведены примеры вмешательства в эти механизмы. Рассмотрено использование сокетов в Delphi: различные режимы их работы, особенности для протоколов TCP и UDP и др. |
0
0
голос
Рейтинг ста&
Как: использовать SVNBridge, чтобы TortoiseSVN работал с CodePlex
Это настолько безумно, что может сработать. Я то и дело разговаривал с командой CodePlex не менее года. Многих из них я считаю друзьями, поэтому я всегда был с ними очень откровенен, говоря такие вещи, как:
«Я никогда не буду использовать какую-либо службу хостинга с открытым исходным кодом без поддержки Subversion».
Конечно, они используют Team Foundation Server, и есть несколько вариантов подключения, если вы не возражаете, в том числе:
Еще в очень активно разрабатывается , этот инструмент является посредником между клиентом Subversion и Сервер Team Foundation.Вы можете использовать его против любой системы TFS.
Первая версия — это локальный прокси-сервер — он запускается в вашем лотке, — но планы предназначены для версии на стороне сервера, которая не требует установки клиента.
К сожалению, на момент написания этой статьи не было бинарной версии (или инструкций), но вот как заставить ее работать.
- Перейдите в раздел недавних проверок проекта SvnBridge на CodePlex и щелкните значок «Загрузить» рядом с последними отметками. Обратите внимание, что он действительно сильно меняется, поэтому он может сломаться.Если да, попробуйте другой.
- Распакуйте ZIP-файл, который вам предоставит система, и либо откройте SvnBridge. sln или перейдите в командную строку и запустите «MSBuild SvnBridge.sln».
- Запустите SvnBridge.exe и обратите внимание на синий значок Q-bert, который появляется на панели задач. Щелкните правой кнопкой мыши и выберите «Настройки».
Перейдите в свой проект CodePlex в браузере и запишите URL-адрес сервера TFS вашего проекта. Обычно это https://tfs03.codeplex.com. Введите этот URL-адрес в настройках.Порт моста обычно 8081, но вы можете это изменить. Обратите внимание, что это означает, что http: // localhost: 8081 будет перенаправлен на https://tfs03.codeplex.com (443). SvnBridge — это всего лишь перенаправитель / переводчик / мост портов.
- Используя выбранный вами инструмент SVN — я TortoiseSVN — перейдите в локальный репозиторий, используя формат http: // localhost: 8081 /
, например http: // localhost: 8081 / Subkismet. Если все работает, вы будете проверять код и просматривать журналы, как если бы это репозиторий Subversion.Безумие. ( Я не ожидал, что это сработает … работает. ) - Вот постоянно обновляемый список того, что работает, а что нет в SvnBridge.
Я думаю, что сайт CodePlex , вероятно, является наиболее активно разрабатываемым сайтом хостинга с открытым исходным кодом. (Я имею в виду сам сайт, а не деятельность в рамках размещенных на нем проектов). Они всегда добавляют что-то новое, и у них есть такие приятные вещи, как расширенный вид средства отслеживания проблем и RSS-каналы буквально для всего.
Я должен отдать им должное за создание этого моста и за создание самого моста с использованием открытых источников. Я сейчас читаю код, и это довольно круто. Местами хакерский, но этого следовало ожидать, учитывая проблемную область, но происходят некоторые интересные вещи, на которые стоит хотя бы взглянуть на код. У них есть система мини-Mocking под названием MyMocks (любопытно) и программа типа TCPTracing «Tivo», которая, кажется, генерирует тесты. Кроме того, если вас интересует WebDAV на C #, есть площадка для хороших идей.
Так или иначе, там происходят интересные вещи. Я с нетерпением жду их релиза 1.0.
О компании Scott
Скотт Хансельман — бывший профессор, бывший главный архитектор в области финансов, теперь спикер, консультант, отец, диабетик и сотрудник Microsoft. Он неудавшийся комик-стэнд-ап, косноискатель и автор книг.
О рассылке новостей
Хостинг от
Использование Subversion с TortoiseSVN — CodeProject
Введение
Subversion — это приложение с открытым исходным кодом, которое используется для создания систем контроля версий.Этот документ даст подробное представление об установке и использовании Subversion с помощью инструмента TortoiseSVN.
Установить клиент Subversion
TortoiseSVN — очень полезный и очень простой инструмент для выполнения всех операций с репозиторием Subversion, и он находится в свободном доступе.
Для установки TortoiseSVN выполните следующие действия:
- Загрузите TortoiseSVN с http://tortoisesvn.net/downloads
- Установите приложение, дважды щелкнув .msi файл
- Перезагрузите компьютер
Доступ к репозиторию
Щелкните правой кнопкой мыши на рабочем столе и в меню выберите TortoiseSVN-> Repo Browser, как показано на рисунке:
На новом экране введите URL-адрес репозитория, скажем, http: // MyServerName / svn / MyRepos или svn: // MyServerName / MyRepos , и нажмите OK.
Он отобразит экран аутентификации, как показано ниже, с возможностью предоставить идентификатор пользователя и пароль для входа в репозиторий.Администратор Subversion предоставит вам ID пользователя и пароль для доступа к вашему репозиторию.
Проверьте Сохранить аутентификацию для сохранения имени пользователя и пароля и нажмите OK. Теперь появится следующий экран, отображающий содержимое репозитория:
Получение рабочей копии
Для получения рабочей копии необходимо оформить заказ из репозитория. Чтобы проверить проект, щелкните правой кнопкой мыши любую папку в браузере репо, как показано:
Или выберите в проводнике Windows каталог, в котором вы хотите разместить свою рабочую копию.Щелкните правой кнопкой мыши, чтобы открыть контекстное меню, и выберите команду SVNCheckout …, как показано ниже.
Теперь появится другое всплывающее окно, как показано ниже:
Введите имя каталога и нажмите OK. Он выполнит извлечение (получение последней версии) выбранного репозитория в каталог извлечения. Если вы вводите имя папки, которая еще не существует, создается каталог с этим именем. Вы должны только проверить в пустой каталог.
Наложение значков
Одной из наиболее заметных особенностей TortoiseSVN является наложение значков, которые появляются на файлах в вашей рабочей копии.
Значок Описание
- На новой извлеченной рабочей копии отображается зеленая галочка. Это означает, что статус Subversion —
нормальный
. - Как только вы начнете редактировать файл, статус изменится на
изменен
, а наложение значка изменится на красный восклицательный знак.Таким образом, вы можете легко увидеть, какие файлы были изменены с момента последнего обновления рабочей копии и должны быть зафиксированы. - Если во время обновления
возникает конфликт
, то значок меняется на желтый восклицательный знак. - Если вы установили свойство svn: needs-lock для файла, Subversion сделает этот файл доступным только для чтения, пока вы не заблокируете этот файл. Файлы, доступные только для чтения, имеют это наложение, чтобы указать, что вы должны сначала получить блокировку, прежде чем вы сможете редактировать этот файл.
- Если вы удерживаете блокировку файла и состояние Subversion нормальное, этот наложенный значок напоминает вам, что вам следует снять блокировку, если вы не используете ее, чтобы другие могли зафиксировать свои изменения в файле.
- Этот значок показывает, что некоторые файлы или папки внутри текущей папки были запланированы на удаление из системы контроля версий или что файл, находящийся под контролем версий, отсутствует в папке.
- Знак «плюс» указывает на то, что запланировано добавление файла или папки в систему контроля версий.
Отправка изменений, внесенных в вашу рабочую копию, называется , фиксирующая изменений. Но перед тем как совершить коммит, вы должны убедиться, что ваша рабочая копия обновлена. Вы можете либо использовать TortoiseSVN † Update напрямую, либо сначала использовать TortoiseSVN † Check for Modification, чтобы увидеть, какие файлы были изменены локально или на сервере.
Если ваша рабочая копия обновлена и нет конфликтов, вы готовы зафиксировать свои изменения.Выберите любой файл и / или папки, которые вы хотите зафиксировать, затем TortoiseSVN † Commit ….
Теперь появится диалоговое окно фиксации TortoiseSVN.
Нажатие на OK зафиксирует ваши изменения в репозитории.
Периодически вы должны гарантировать, что изменения, сделанные другими, включены в вашу локальную рабочую копию. Процесс получения изменений с сервера в вашу локальную копию называется обновлением. Обновление может выполняться для отдельных файлов, набора выбранных файлов или рекурсивно для всей иерархии каталогов.Для обновления выберите нужные файлы и / или каталоги, щелкните правой кнопкой мыши и выберите TortoiseSVN † Обновить в контекстном меню проводника.
Появится окно, в котором будет отображаться ход выполнения обновления.
Изменения, внесенные другими пользователями, будут объединены в ваши файлы с сохранением всех изменений, которые вы могли внести в те же файлы. Репозиторий не затронут обновлением .
В диалоговом окне прогресса используется цветовое кодирование для выделения различных действий обновления:
- Фиолетовый
- Темно-красный
- Зеленый
- Ярко-красный
- Черный
В ваш туалет добавлен новый предмет.
Избыточный элемент удален из вашего туалета, или отсутствующий предмет заменен в вашем туалете.
Изменения из репозитория успешно объединены с вашими локальными изменениями.
Изменения из репозитория объединяются с локальными изменениями, что приводит к конфликтам, которые необходимо разрешить.
Неизмененный элемент в вашем туалете обновлен до более новой версии из репозитория.
Если вы создали новые файлы и / или каталоги в процессе разработки, вам также необходимо добавить их в систему контроля версий.Выберите файл (ы) и / или каталог из вашего рабочего каталога и используйте TortoiseSVN † Добавить.
Теперь появится всплывающее окно, как показано ниже:
Выберите требуемый файл (ы) и папку (и) и нажмите OK. После добавления файлов / каталогов в систему управления версиями файл появляется с добавленным наложенным значком, что означает, что вам сначала нужно зафиксировать свою рабочую копию, чтобы сделать эти файлы / каталоги доступными для других разработчиков
Чтобы добавить файлы из-за пределов вашей рабочей копии, вы можете использовать обработчик перетаскивания:
- Выберите файлы, которые хотите добавить.
- Перетащите их правой кнопкой мыши в новое место внутри рабочей копии.
- Отпустить правую кнопку мыши.
- Выберите контекстное меню SVN Добавить файлы в этот WC . Затем файлы будут скопированы в рабочую копию и добавлены в систему контроля версий после нажатия на пункт меню «Применить».
Другой способ добавить файлы и папку — использовать обозреватель репо; вы можете напрямую перетащить любой элемент в нужное место. Но он не обновит вашу рабочую копию.Вы можете использовать опцию TortoiseSVN † Обновить, чтобы отразить недавно добавленные элементы в рабочую копию.
Удалить
Если вы удалите файл / каталог с помощью TSVN, файл будет удален из вашей рабочей копии и помечен для удаления. В родительской папке файла отображается значок «удален». Вы всегда можете вернуть файл, если вызовете TortoiseSVN † Revert для родительской папки.
Перемещение
Если вы хотите переместить файлы в рабочую копию, снова используйте обработчик перетаскивания:
- Выберите файлы или каталоги, которые вы хотите переместить
- Перетащите их правой кнопкой мыши в новое место внутри рабочей копии
- Отпустите правую кнопку мыши
- Во всплывающем меню выберите контекстное меню SVN Переместить сюда версионные файлы
После перемещения, переименования или удаления используйте параметр SVNCommit, чтобы зафиксировать изменения в репозитории.
Если файл удаляется через Проводник вместо использования контекстного меню TortoiseSVN, диалоговое окно фиксации показывает эти файлы и позволяет вам удалить их из системы управления версиями перед фиксацией. Однако, если вы обновите свою рабочую копию, Subversion обнаружит отсутствующий файл и заменит его последней версией из репозитория. Если вам нужно удалить файл с контролем версий, всегда используйте TortoiseSVN † Delete, чтобы Subversion не угадывала, что вы действительно хотите сделать.
Если папка удаляется через Проводник вместо использования контекстного меню TortoiseSVN, ваша рабочая копия будет повреждена, и вы не сможете выполнить фиксацию.Если вы обновите свою рабочую копию, Subversion заменит отсутствующую папку последней версией из репозитория, и затем вы сможете удалить ее правильным способом, используя TortoiseSVN † Delete.
Вы можете напрямую удалить любой файл или папку с помощью обозревателя репозитория TortoiseSVN.
По умолчанию Subversion предоставляет локальную копию всем пользователям, и каждый пользователь может вносить свои изменения. Теперь проблема в том, что если пользователь отправляет свою модификацию после отправки другим пользователем, Subversion покажет сообщение, показывающее устаревшее, и поэтому мы должны объединить эти изменения с предыдущей версией.Это означает, что Subversion лучше всего работает без блокировки, используя методы «Копировать-Изменить-Слияние». Но основная проблема возникает в случае «не объединяемых» файлов; например, графические файлы, если два человека изменяют один и тот же файл, слияние невозможно, поэтому один из них потеряет свои изменения.
Чтобы избежать этой проблемы, используется метод «Блокировка», который позволяет только одному пользователю изменять элемент репозитория.
Этого можно добиться, выполнив следующие действия.
Установите свойство svn: needs-lock для файла (ов) или каталога
В окне со списком свойств нажмите кнопку [Добавить].
В поле со списком имени свойства выберите свойство svn: need-lock .
Щелкните [OK] и отправьте свои изменения в репозиторий, выбрав TortoiseSVN † SVNCommit, как описано выше. Теперь отображается значок элемента набора свойств, как показано ниже.
N.B .: Для установки свойства svn: need-lock для папки есть небольшая разница. В диалоговом окне «Добавить свойство» это свойство не отображается в поле со списком.Поэтому мы должны ввести свойство в редактируемое поле со списком и установить флажок Применить свойство рекурсивно (если требуется) для рекурсивного применения свойства. Свойство не будет отображаться в редакторе свойств папки, которую мы применили, оно будет отображаться только для отдельных подфайлов.
Мы не можем редактировать файл со свойством svn: needs-lock (файлы с серым флажком).
Блокировка
Пользователь не может редактировать файл со свойством svn: needs-lock (файлы становятся доступными только для чтения).Итак, для редактирования документа щелкните правой кнопкой мыши файл, доступный только для чтения, и выберите TortoiseSVN † Получить блокировку и зафиксируйте изменения в репозитории.
Теперь заблокированный пользователь получает право изменять файл и отправлять изменения в репозиторий. Другие пользователи не могут редактировать файл и отправлять его в репозиторий (например, VSS).
Для этого щелкните правой кнопкой мыши каталог в рабочей папке и выберите редактор «Добавить свойство».
Выберите свойство tsvn: logminimize и установите минимально необходимую длину, равную нашему требуемому размеру, скажем 25, и зафиксируйте изменения в репозитории.
Теперь каждый пользователь может зафиксировать свои изменения в этом конкретном каталоге только после ввода комментариев с минимальной длиной символов 25, потому что кнопка [OK] будет активна только после ввода комментария с указанной длиной.
В предыдущем разделе мы установили минимальную длину комментария и сделали комментарий обязательным. Но пользователь не может знать, какой длины комментарий требуется для ввода, и для этой цели мы можем отметить ширину комментария.
В редакторе «Добавить свойства» выберите свойство tsvn: logwidthmarker , как показано, и установите значение, такое же, как ширина журнала.
Зафиксируйте изменения в репозитории. Теперь во всех операциях фиксации в каталоге диалоговое окно фиксации будет отмечать ширину, как показано ниже.
Очень часто при разработке программного обеспечения изменения связаны с определенной ошибкой или идентификатором проблемы. Пользователи систем отслеживания ошибок (трекеры проблем) хотели бы связать изменения, которые они вносят в Subversion, с конкретным идентификатором в их трекере проблем.Этот тип ассоциативной связи в основном требуется в случае файлов кода, в которых для каждого исправления ошибки мы можем передать URL-адрес системы ошибок подрывной работе.
TortoiseSVN может помочь пользователю двумя способами:
- Когда пользователь вводит сообщение журнала, четко определенная строка, включающая номер проблемы, связанной с фиксацией, может быть добавлена автоматически. Это снижает риск того, что пользователь введет номер проблемы так, что инструменты отслеживания ошибок не смогут правильно его проанализировать.
- Когда пользователь просматривает сообщения журнала, TortoiseSVN создает ссылку из каждого идентификатора ошибки в сообщении журнала, которое запускает браузер для решения упомянутой проблемы.
Для интеграции TortoiseSVN с системой отслеживания ошибок выполните следующие действия:
Определите URL-адрес
Обычно URL-адрес системы отслеживания ошибок имеет часть идентификатора. Например, рассмотрим URL-адрес http://tortoisesvn.tigris.org/issues/show_bug.cgi?id=12534 .
Здесь мы можем изменить идентификатор на внутреннюю переменную TortoiseSVN % BUGID%
. Таким образом, конечный URL-адрес принимает вид: http://tortoisesvn.tigris.org/issues/show_bug.cgi?id=%BUGID% .
Применить URL-адрес
Чтобы применить URL-адрес к рабочей папке Subversion, щелкните правой кнопкой мыши конкретную рабочую папку, выберите «Свойства» и вызовите диалоговое окно «Добавить свойство».
Выберите свойство bugtraq: url и введите подготовленный выше URL-адрес в качестве значения свойства. Щелкните [OK] и снова добавьте еще одно свойство bugtraq: message
, установите тот же URL-адрес, что и значение, и щелкните OK.
Теперь диалоговое окно со списком свойств должно выглядеть, как показано ниже:
Зафиксируйте свои изменения в репозитории, и ваша интеграция с системой отслеживания ошибок почти завершена.
Интеграция в действии
Для каждой операции фиксации в Subversion вы получите диалоговое окно фиксации с полем редактирования идентификатора ошибки / номера проблемы, как показано ниже.
Если у вас есть идентификатор проблемы для фиксации, введите идентификатор ошибки только в поле редактирования (в противном случае оставьте его пустым), введите комментарии в сообщение и нажмите ОК.
Если вы укажете идентификатор проблемы, скажем, 12324, и прокомментируете, скажем, это сообщение об ошибке., При использовании TortoiseSVN Show Log, диалоговое окно будет отображаться, как показано ниже.Если щелкнуть ссылку в описании, автоматически откроется система отслеживания ошибок и направит вас к упомянутой ошибке. Если вы не указали идентификатор, то в описании не должно быть URL.
Изменение метки номера ошибки
Чтобы изменить метку поля редактирования идентификатора ошибки / номера проблемы в диалоговом окне «Фиксация», выберите свойство bugtraq: label и введите отображаемый текст и зафиксируйте свои изменения в репозитории.
Появится диалоговое окно, как показано ниже.
Для отображения окна с предупреждением для пустого ввода идентификатора ошибки (по умолчанию без сообщения) вы можете установить для свойства bugtraq: warnifnoissue значение yes, как показано ниже.
Теперь он покажет сообщение, как показано ниже, при фиксации ваших изменений.
Заключение
Эта статья даст вам общее представление об использовании Subversion с помощью клиентского инструмента Subversion под названием TortoiseSVN. Чтобы получить подробное представление о TortoiseSVN и всех его функциях и настройках, обратитесь к руководству пользователя TortoiseSVN.Чтобы найти FAQ по TortoiseSVN, посетите http://tortoisesvn.net/faq.
TortoiseSVN — блог twm
Многие проекты с открытым исходным кодом были перенесены из бывшего лидера Slashdot SourceForge на GitHub и в процессе обычно преобразованы из Subversion в git. Это также включает довольно много библиотек Delphi, таких как project Jedi (JCL / JVCL), SynEdit или Indy.
Мне не очень нравится git, он просто кажется слишком сложным для большинства проектов, а инструменты графического интерфейса, которые я пробовал, неуклюжи по сравнению с TortoiseSVN.Я вижу некоторые преимущества, но пока не уверен. Итак, я остался с SVN и использовал его для доступа к репозиториям GitHub через их мост git-svn. В большинстве случаев это работает нормально, если вы не хотите переименовать файл, что, по-видимому, невозможно по какой-либо причине.
Теперь участие в таких проектах — еще одна проблема. Вам нужно создать что-то, называемое «пул-реквесты», которые, по сути, представляют собой способ создания патчей, которые централизованно управляются GitHub вместе с областью обсуждения для них.Мне потребовалось некоторое время, чтобы осмыслить процесс, но я думаю, что теперь я понял. Итак, вот шаги:
- Получите учетную запись GitHub. Нет никакого способа обойти это.
- Создайте ответвление репозитория проекта, в который вы хотите внести свой вклад.
- Создайте ветку в этом разветвленном репозитории. Вам нужна отдельная ветка для каждого запроса на перенос, который вы хотите создать! (Это было главным камнем преткновения для меня, я просто не осознавал этого. Вероятно, это где-то задокументировано, но я не заметил этого.)
- Загляните в ту ветку.
- Внесите изменения в эту ветку
- Зафиксируйте эти изменения и отправьте их на GitHub
- Создайте на GitHub запрос на перенос
Есть много сайтов, которые иногда дают вам эти шаги с примерами того, как их делать, но всегда с использованием git. Вот как это сделать без клиента git, но используя svn + вышеупомянутый мост git-svn.
GitHub показывает URL-адрес каждого репозитория, к которому можно получить доступ через git или svn.Это выглядит так:
https://github.com/[accountght/[project ].git
Помните, что этот URL-адрес содержит весь репозиторий, поэтому для того, чтобы проверить только магистраль (главную ветвь) или ветку, вам нужно добавить к ней / trunk или / branch / [branchname].
Создание ветки может быть выполнено с помощью svn обычным способом или с помощью веб-интерфейса на GitHub. Я предпочитаю второй вариант, для чего нужно ввести несуществующее имя ветки и нажать Enter.
Для следующих шагов предположим, что мы создали ветку под названием «pullrequesttest».
Используя клиент svn по вашему выбору (мой — TortoiseSVN), проверьте исходники только что созданной ветки. URL-адрес будет:
https://github.com/[account provided/[project ].git/branches/pullrequesttest
Просто внесите изменения и зафиксируйте их обычным способом. Subversion не делает различий между фиксацией и отправкой на сервер, как это делает git.
Теперь ветка содержит изменения, которые вы хотите внести в проект.
На GitHub выберите эту ветку, и вы увидите сообщение о ваших изменениях и кнопку «Сравнить и запрос на вытягивание».
Щелкните эту кнопку, добавьте комментарий и отправьте запрос на перенос. Он должен появиться на странице исходного проекта. Кто-то с правами на это теперь может одобрить и объединить эти изменения. Их тоже можно там обсудить. Возможно, для их принятия необходимы дальнейшие улучшения. Для этого вы просто вносите изменения в проверенный код и фиксируете их в той же ветке. Они автоматически станут частью запроса на перенос (помните, я сказал, что вам нужна отдельная ветвь для каждого запроса на перенос? Вот почему.).
А теперь предположим, что есть другие, не связанные с этим изменения, которые вы хотели бы внести? Начните с создания новой ветки на основе master, проверьте код, внесите изменения, зафиксируйте их и создайте новый запрос на перенос для новой ветки.
Просто не забывайте никогда не вносить никаких изменений в магистраль (= главную ветку). Он предназначен для того, чтобы иметь тот же контент, что и исходный репозиторий, и базу для каждой ветки, которая будет использоваться для запроса на перенос.
Я уверен, что это описание сложнее, чем должно быть.Моя основная идея при написании этой статьи — получить отправную точку для создания запросов на перенос без использования git. Если вы можете подумать об улучшениях, обсудите их в Delphi Praxis. Обратите внимание, что это не предназначено для обсуждения достоинств git и Subversion. Нам не нужен еще один из них.
Нет хороших советов и приемов: SVN + SSH с TortoiseSVN
Во-первых, краткое введение в то, что происходит, если вы раньше не использовали SSH с ключами. Идея использования ключей заключается в том, чтобы избежать использования паролей — вместо этого ваш открытый ключ находится на сервере, и когда вы подключаетесь, вы идентифицируете себя с помощью своего закрытого ключа (который, как следует из названия, должен быть доступен только вам).Вы можете прочитать подробности о том, как это работает и что включает в себя, на http://sshkeychain.sourceforge.net/mirrors/SSH-with-Keys-HOWTO/SSH-with-Keys-HOWTO-3.html.
A. Получите свой открытый и закрытый ключи
- Войдите в систему, к которой вы будете подключаться (хост, на котором работает сервер SVN).
- Сгенерируйте ключ, защищенный 1024-битной парольной фразой и именем mykey , используя команду ssh-keygen -b 1024 -t dsa -N парольную фразу -f mykey (замените парольную фразу реальной парольной фразой по вашему выбору — он не обязательно должен совпадать с паролем вашей учетной записи; на самом деле, это может иметь смысл).
- Будут созданы файлы mykey и mykey.pub — закрытый и открытый ключи соответственно.
- В своем домашнем каталоге создайте новый каталог с именем .ssh и используйте команду chmod 700 .ssh, чтобы установить соответствующие разрешения для этой папки.
- Скопируйте открытый ключ в эту папку и переименуйте его в authorized_keys (cp mykey.pub / домашний каталог /.ssh/authorized_keys), а затем установите соответствующие разрешения (chmod 600 authorized_keys). В более старых реализациях имя ключа authorized_keys2.
- Скопируйте закрытый ключ (mykey) на компьютер, на котором вы будете устанавливать соединение (клиент, на котором будет использоваться TortoiseSVN)
B. Протестируйте соединение с PuTTY, PuTTYgen и Pageant
- Проблема в том, что ключ, сгенерированный на хосте, не может напрямую использоваться PuTTY; он должен быть преобразован с помощью PuTTYgen. Используйте Конверсии> Импортировать ключ, чтобы импортировать ваш закрытый ключ (mykey), а затем Сохраните закрытый ключ как mykey.ppk (или как хотите).
- В PuTTY создайте новый сеанс с mykey.ppk в качестве закрытого ключа в SSH> Auth> Файл закрытого ключа для аутентификации
- Попробуйте подключиться — если вы не указали имя пользователя как часть имени хоста (в форме имя пользователя @ хост), вам будет предложено ввести имя пользователя, но не пароль. Вы должны увидеть что-то вроде
Using username "username". Аутентификация с открытым ключом «import-openssh-key» от агента Последний вход: 12 февраля, пятница, 17:21:41 2010 c-99-250-91-125.hmd2.ca.comcast.net
- После того, как вы убедились, что ваш ключ работает, вы можете при желании начать использовать Pageant вместо того, чтобы сохранять ваши ключи (возможно, для нескольких имен пользователей) вместо того, чтобы указывать ключ в деталях сеанса — выберите «Добавить ключ», выберите закрытый ключ и укажите кодовую фразу для него — их ключ должен быть добавлен в ваш список.
- Попробуйте подключиться через PuTTY, за исключением того, что на этот раз удалите закрытый ключ из SSH> Auth> Файл закрытого ключа для аутентификации — PuTTY затем должен использовать данные ключа из Pageant.
Чтобы TortoiseSVN (или PuTTY) не запрашивал имя пользователя при подключении, вы можете использовать форму имя пользователя @ host / repo-path, чтобы попытаться установить соединение с именем пользователя для входа.
C. Подключение к TortoiseSVN
Вы можете указать различные способы сообщить TortoiseSVN, как подключиться к вашему репозиторию — указав имя соединения PuTTY, которое вы создали выше, или используя Pageant; Я использовал Pageant
- Убедитесь, что у вас запущен Pageant и импортирован ключ, как описано выше.
- URL-адрес репозитория должен иметь вид svn + ssh: // hostname / repo-path. Для подключения PuTTY предполагается использовать URL-адрес svn + ssh: // PuTTY-Connection-Name / repo-path.
- Этого должно быть достаточно для подключения к серверу SVN.
Если вы продолжаете получать диалоговое окно с названием TortoisePlink, в котором вас просят «войти как», то вы, вероятно, видите ошибку, описанную на
http://old.nabble.com/Bug-with-TortoisePlink-td18812277.html. Обходной путь, описанный на плакате, состоит в том, чтобы очистить значение ключа реестра HKEY_CURRENT_USER> Software> SimonTatham> Putty> Sessions> Default Settings> HostName.
Видимо, если в соединении по умолчанию в PuTTY указано имя хоста, эта проблема проявляется сама собой. Даже если вы не видите никакого значения в интерфейсе PuTTY, вам следует очистить ключ в реестре.
Как всегда, имейте в виду, что редактирование реестра чревато опасностями, поэтому сделайте резервную копию и дважды подумайте, прежде чем что-либо менять.
Если вы не используете ключи, вы, вероятно, будете видеть диалоговые окна с запросом имени пользователя и пароля, всплывающие снова и снова — с репозиторием, к которому я подключаюсь, мне нужно пройти аутентификацию трижды при первой попытке просмотра репозиторий, а затем еще раз для каждого нового каталога, который я выбираю. Кажется, что для каждого запроса устанавливается новое соединение, но я не уверен.
ОБНОВЛЕНИЕ [1630 18 февраля 2010 г.]: я перепутал разрешения для папки .ssh и файла authorized_keys.Также добавлена дополнительная информация и исправление для диалогового окна «Войти как» TortoisePlink.
Как использовать TortoiseHg | Блог Майкла
Intro
Вот руководство по использованию TortoiseHg. Это руководство в основном содержит то, что вы, вероятно, поймете уже через несколько дней работы с TortoiseHg, но оно также содержит советы, которые я узнал гораздо позже. Для тех, кто не знаком с Hg из фона SVN, в основном в Hg весь репозиторий находится в вашей рабочей папке, поэтому фиксация и обновление происходят в вашей собственной копии репозитория.Когда вы будете готовы, вы можете отправить один или несколько коммитов в центральный репозиторий, с которым также работают другие разработчики, или перенести новые коммиты из центрального репозитория в ваш локальный репозиторий. У вас также есть возможность push / pull из другого репозитория.
Хотя ряд вещей можно сделать через контекстные меню в проводнике файлов, это руководство будет сосредоточено на выполнении всего в TortoiseHg Workbench. Также, чтобы изучить команды Hg для всех этих шагов, вы можете открыть View> Show Console
и посмотреть, что было запущено, когда вы выполнили шаг в графическом интерфейсе, вы также можете просто ввести здесь команды Hg, если это быстрее.
Создание нового репозитория
Хотя вы можете создать репозиторий на локальном компьютере с помощью команды Файл> Новый репозиторий
и даже обслуживать его через HTTP с помощью Репозиторий> Веб-сервер
, рекомендуется использовать службу хостинга исходных текстов в Интернете. Это связано с тем, что онлайн-сервис обеспечивает лучшую защиту от резервного копирования на случай, если с вашей машиной что-то случится, и упрощает совместное использование вашего репозитория с другими, поскольку вам не нужно поддерживать собственный сервер.Двумя наиболее популярными из них являются bitbucket и github, и оба предлагают бесплатные планы, bitbucket великолепен, потому что он поддерживает Hg, а также Git, но github поддерживает только Git, поэтому вам нужно будет использовать расширение hggit, подробности см. В использовании tortoisehg с git.
https://bitbucket.org/plans
https://github.com/pricing
Аутентификация
HTTP / S
HTTP / S auth будет работать сразу, предлагая вам ввести имя пользователя или пароль каждый раз, когда вы нажимаете или вытягиваете. Для сохранения учетных данных рекомендуется включить расширение mercurial_keyring
для безопасного хранения пароля (см. Файл настроек / включение расширений, чтобы узнать, как это сделать).После включения, если вы указываете имя пользователя либо в URL-адресе репозитория https: //[email protected]/repo
(hggit не поддерживает это), либо в файлах настроек:
Тогда в следующий раз, когда вы сделаете push или pull, вам будет предложено только ввести пароль, который будет автоматически сохранен для использования в будущем. Как работает файл настроек: gh
или bb
может быть любым, и это просто способ сгруппировать настройки аутентификации вместе. Если префикс совпадает с частью URL-адреса репозитория, то будет использоваться указанное имя пользователя.Пароль также можно определить здесь, в файле настроек, но тогда он будет сохранен в виде обычного текста в известном месте, которое менее безопасно, чем использование mercurial_keyring
.
Хотя расширение mercurial_keyring
доступно в Windows, в Linux вам необходимо сначала установить его, прежде чем оно появится в расширениях TortoiseHg, которые вы можете включить:
1 | Брелок easy_install |
SSH
Вот руководство, которому вы можете следовать для установки SSH в Windows:
https://confluence.atlassian.com/display/BITBUCKET/Set+up+SSH+for+Mercurial
Руководство
Linux SSH:
https://confluence.atlassian.com/pages/viewpage.action?pageId=271943168
Клонирование репозитория
Файл> Клонировать репозиторий
Создание фиксации
Для фиксации вы должны либо выбрать рабочий каталог в истории фиксации, либо щелкнуть значок фиксации (зеленая галочка) на верхней панели инструментов.Чтобы зафиксировать фиксацию, отметьте файлы, которые вы хотите включить, введите сообщение фиксации и нажмите кнопку фиксации:
Обратите внимание: если это новый файл, который не был версией, вам будет предложено добавить неотслеживаемые файлы. Вы можете щелкнуть файл правой кнопкой мыши и выбрать Добавить файл
перед тем, как нажать кнопку фиксации, если хотите, но он все равно будет включен как часть фиксации, только если вы отметили первую.
В списке файлов отображаются только изменения, поэтому, если вы не видите изменения, которые хотите зафиксировать, просто нажмите кнопку обновления прямо над списком файлов.
Указание имени пользователя
Если вы щелкните options
чуть выше окна сообщения фиксации, вы должны увидеть это диалоговое окно:
Здесь вы можете указать имя пользователя и при желании сохранить его либо в вашем файле настроек для локального репозитория, либо в файле глобальных настроек для будущих коммитов. Обратите внимание: если вы используете свой адрес электронной почты для входа на github или bitbucket, имя пользователя в онлайн-фиксации будет отображаться связанным с вашей учетной записью, если вы хотите сохранить свой адрес электронной почты закрытым для github, вы можете использовать отображаемое имя
, а для битбакета в настройках на веб-сайте репозитория вы можете сопоставить имена учетным записям пользователей.
Фиксировать фрагменты
Чтобы зафиксировать только части измененного файла, щелкните файл в списке файлов, затем с правой стороны вы увидите список изменений, в этом окне вы можете отметить, какие изменения вы хотите включить в совершить:
Переименовать файлы
Чтобы обработать переименование файлов с целью сохранения истории файлов, вы можете щелкнуть правой кнопкой мыши по переименованному файлу и выбрать « Было переименовано из> исходного имени файла
».Или вы можете использовать диалог обнаружения переименований, щелкнув правой кнопкой мыши любой файл и выбрав Обнаружить переименования
:
.
В неверсированных файлах выберите файл, который был переименован, и нажмите «Найти переименования». Вы можете уменьшить значение Min Similarity
, если переименованный файл был изменен и совпадение не было найдено. После того, как совпадение найдено, вы можете нажать Принять все совпадения
или, если найдено несколько совпадений, выбрать правильное совпадение в списке совпадений кандидатов и нажать Принять выбранные совпадения
.Обратите внимание, что это также может быть полезно при разделении файла на два, но вам нужна одинаковая история файлов для обоих файлов перед разделением, в этом случае просто снимите флажок Учитывайте только удаленные файлы
, прежде чем пытаться найти совпадение. Если вам сложно найти совпадение, вы можете отменить переименование, а затем в проводнике файлов переименовать файл, щелкнув правой кнопкой мыши и выбрав TortoiseHg> Переименовать файл
.
Удаление файлов
Вы можете просто отметить удаленный файл, и когда вы нажмете кнопку фиксации, вам будет предложено удалить выбранные удаленные файлы.Если вы щелкните правой кнопкой мыши файл в списке файлов, вы не увидите возможность удалить только файл Забыть файл
. Что означает «забыть» — это удалить файл из системы управления версиями, но не удалить его из файловой системы. В проводнике файлов есть опция под названием Remove file
, которая как забудет файл из системы управления версиями, так и удалит файл из файловой системы.
Игнорирование файлов
Если в списке файлов есть неотслеживаемые файлы, которые вы хотите игнорировать, щелкните правой кнопкой мыши один из этих файлов и выберите Игнорировать файлы
.
Вверху вы можете выбрать, какой синтаксис использовать glob или regexp, затем укажите фильтр и нажмите «Добавить». Фильтр теперь должен появиться в левом столбце, а текущий список неотслеживаемых файлов, которые не игнорируются, должен появиться в правой части, чтобы вы могли сразу увидеть, работает ли ваш фильтр так, как ожидалось, или нет. Вы также можете щелкнуть неотслеживаемый файл, чтобы предварительно заполнить текстовое поле фильтра именем файла, готовым для создания нового фильтра.
Обратите внимание, что это создает файл.hgingore, который можно добавить в систему управления версиями. Если вы хотите получить второй файл .hgignore, который не хотите добавлять в систему управления версиями, вы можете добавить его в свой файл настроек:
Затем в диалоговом окне игнорирования вы можете щелкнуть раскрывающийся список для переключения между игнорируемыми файлами. Вы можете разместить этот файл игнорирования в любом месте, где захотите, некоторые захотят разместить его в папке .hg, а некоторые просто в корне своего репозитория, а затем добавить имя файла для игнорирования.
Просмотр различий
В списке файлов изменений вы можете щелкнуть файл правой кнопкой мыши и выбрать Diff to Parent
, чтобы просмотреть изменения в KDiff3.
Отменить изменения
Если вы хотите отменить внесенные изменения. В списке файлов щелкните файл правой кнопкой мыши и выберите Восстановить
. Если вы хотите отменить только некоторые изменения, см. Изменения на полках, где вы можете отложить биты, которые хотите сохранить, затем вы можете вернуть файл, а затем вы можете восстановить отложенные изменения.
Если вы вернете добавленный файл, он просто не будет отслеживаться, поэтому для удаления файла вам нужно щелкнуть файл правой кнопкой мыши и выбрать Удалить неверсионный
.Если вы вернете отсутствующий файл или файл, он будет восстановлен.
Push / pull коммиты в удаленный репозиторий
После фиксации изменений в вашем локальном репозитории вам необходимо отправить эти коммиты в удаленный репозиторий. В правой части панели инструментов вверху есть кнопки для выполнения толкания или вытягивания, а также кнопки для предварительного просмотра того, что будет толкаться или вытягиваться.
Теперь, когда вы пытаетесь нажать, вы можете увидеть эту ошибку:
Это в основном означает, что в удаленном репозитории есть новые коммиты, которые вам нужно сначала вытащить, прежде чем вы сможете нажать, после извлечения вы увидите что-то вроде этого на своем графике истории:
Теперь, если вы попытаетесь нажать, вы получите ошибку, потому что теперь в этой ветке две головы, а может быть только одна.Есть два подхода, можно либо объединить:
Или можно перебазировать:
Rebase хорош тем, что сохраняет линейность истории, что упрощает отслеживание, поэтому, как правило, это предпочтительный подход. Теперь, когда у вас есть одна голова, вы готовы толкать ее.
Обновление
Идея обновления состоит в том, чтобы обновить рабочий каталог до определенной версии в истории системы управления версиями. Это можно сделать, щелкнув правой кнопкой мыши фиксацию в истории фиксации, которую вы хотите обновить, и выбрав в контекстном меню Обновление
.Если у вас есть локальные незафиксированные изменения, вам может быть предложено либо отменить эти изменения, либо отложить их.
Отложить изменения на полку
Идея отложить изменения состоит в том, чтобы временно переместить изменения, внесенные в ваш рабочий каталог, в другое место, чтобы их можно было восстановить позже. Чтобы открыть инструмент полки, выберите рабочий каталог в истории фиксации, а затем щелкните этот значок чуть ниже окна сообщения фиксации:
Теперь вы должны увидеть это:
В левом столбце вы должны увидеть список изменений в рабочем каталоге.В правом столбце вы должны увидеть список изменений на полке, которую я назвал по умолчанию. Прежде чем вы сможете начать перемещать изменения, вам нужно будет создать новую полку, щелкнув значок чуть выше раскрывающегося списка полки в левой части правого столбца. Теперь вы можете щелкнуть значок Переместить все файлы
или Переместить выбранные значки файлов
вверху, чтобы переместить изменения файлов между рабочим каталогом и полкой. Вы даже можете выбрать части изменения файла, выбрав файл и затем отметив фрагменты, которые вы хотите скопировать, а затем нажав кнопку Переместить выбранные фрагменты
, как показано на изображении выше.
Обратите внимание, что вы можете создать более одной полки и даже выбрать полку в раскрывающемся списке в левом столбце, чтобы перемещать изменения между полками. Очистить просто очищает полку или рабочий каталог от всех изменений, а удаление удаляет полку.
Обработка конфликтов
Иногда, если вы пытаетесь восстановить изменения, отложенные в вашем рабочем каталоге, вы можете увидеть следующее:
Если вы ответите «Да», вы увидите что-то вроде этого:
Как работает этот диалог — в верхнем окне он показывает текущий файл в рабочем каталоге, который вы можете редактировать здесь.Ниже находятся два столбца, первый столбец представляет собой список изменений или фрагментов файла, находящихся на полке, второй столбец показывает, что это за изменение для выбранного фрагмента.
Идея здесь в том, что вы вручную применяете изменение для выбранного фрагмента к верхнему полю, а затем щелкаете зеленую галочку между двумя столбцами, чтобы сказать, что проблема решена, прежде чем переходить к следующему фрагменту. Когда вы закончите, нажмите «Сохранить».
Ветви
Чтобы создать новую ветку, щелкните метку ветки чуть выше окна сообщения фиксации:
И вы должны увидеть это:
Отсюда вы можете создавать новые ветки или закрывать существующие ветки, это изменение происходит после завершения фиксации.Обратите внимание, что вы фильтруете историю фиксации, чтобы отображать только фиксации для указанной ветки, сначала выберите график Фильтр с набором ревизий значок
на панели инструментов вверху. Когда появится панель инструментов фильтра, вы можете выбрать нужную ветку из раскрывающегося списка справа.
Объединение / обработка конфликтов
Если вы хотите объединить обновления веток в ветку, в которую вы хотите объединить изменения, выбрав последнюю фиксацию, щелкните правой кнопкой мыши и выберите Обновление
.Если вы объединяете две главы одной и той же ветки, то не имеет значения, какую из них вы выберете для обновления. Затем вы выбираете заголовок другой ветки, затем щелкните правой кнопкой мыши и выбираете Объединить с локальным
, как показано ниже:
Вы увидите диалоговое окно под названием Подготовка к слиянию
, здесь вам может потребоваться отменить или отложить локальные незавершенные изменения перед продолжением, затем нажмите «Далее». Если на следующем экране вы увидите это:
У вас есть конфликты слияния, которые необходимо разрешить, для разрешения щелкните выделенное слово Разрешить
, и вы должны увидеть следующее:
Здесь пять вариантов:
- Mercurial Resolve — разрешить Mercurial попытаться автоматически разрешить конфликт, например, если изменения находятся в разных частях файла, тогда это должно работать
- Tool Resolve — это также пытается автоматически разрешить, используя вместо этого сконфигурированный инструмент diff (по умолчанию KDiff3), и, если это не удается, покажет диалоговое окно, в котором вы можете вручную разрешить диалоговое окно
- Take Local — выбирает файл из ветки / главы, на которую вы обновили, вместо файла, который вы объединяете из
- Take Other — выбирает файл из ветки / главы, из которой вы объединяете, вместо файла, который вы обновили до
- Отметить как решенный — на этом этапе вы можете открыть конфликтующий файл из рабочего каталога и вручную разрешить его в текстовом редакторе, когда вы закончите, вы можете вернуться в это диалоговое окно и выбрать отметку как разрешенный.
Обычно вы можете просто выбрать все конфликтующие файлы и выбрать средство разрешения, это диалоговое окно, которое он показывает (при использовании KDiff3), если есть конфликт в определенной строке:
В левом столбце (A) указан общий предок для обеих голов, в среднем столбце (B) у вас есть текущая голова, до которой вы обновились, а в правом столбце (C) — голова, из которой вы производите слияние.А внизу показан объединенный вывод, поэтому здесь вы можете увидеть строку, которая вызвала конфликт.
Итак, на панели инструментов вы можете выбрать, какие строки вы хотите из A, B или C. В этом случае, глядя на разницу, мы видим, что, вероятно, нам нужны строки из B и C, как показано:
Теперь, когда первый конфликт разрешен, мы можем щелкнуть тройную стрелку вниз на панели инструментов, чтобы перейти к следующему конфликту:
Теперь для этого конфликта мы также хотим выбрать линии из B и C, как показано.Однако здесь вы можете видеть, что вывод неверен и его необходимо исправить вручную:
Чтобы исправить, окно вывода доступно для редактирования, поэтому вы можете вручную исправить конфликт, как показано ниже.
Когда больше нет конфликтов, кнопка следующего конфликта будет отключена, вы можете нажать сохранить вверху, а затем закрыть окно. Как только все конфликты будут разрешены, вы можете закрыть диалоговое окно «Разрешение конфликтов» TortoiseHg и нажать «Далее» в окне слияния. На следующем экране вы можете ввести сообщение о фиксации и затем щелкнуть Commit Now
.Теперь все готово.
Трансплантат / трансплантат
Чтобы использовать трансплантат, вам необходимо включить расширение трансплантата. Graft позволяет копировать одну фиксацию из одной ветки в другую. Возьмем, к примеру, этот сценарий:
Чтобы скопировать фиксацию «Добавить статус сборки в readme» в ветку по умолчанию, мы сначала обновим ее до ветки по умолчанию, затем щелкните правой кнопкой мыши фиксацию, которую мы хотим скопировать, и выберите Graft to Local
. Теперь вы скопировали фиксацию:
Добавление комментариев к файлам (авторство)
Чтобы просмотреть историю файла, просто щелкните файл правой кнопкой мыши в списке изменений файла и выберите История файла / Аннотировать
.Если вы не видите файл, поскольку он не изменился, вы можете либо найти его в проводнике, либо щелкнуть правой кнопкой мыши рабочий каталог в истории фиксации и выбрать Обзор версии
, а затем найти файл там. Теперь вы увидите такой диалог:
Здесь вы можете увидеть список коммитов, когда файл был изменен, который вы можете выбрать, чтобы увидеть, какие были изменения. В верхней части нижнего поля вы можете переключаться между тремя различными представлениями, первые два позволяют переключаться между патчем представления стиля различий и встроенным (вы все равно можете щелкнуть правой кнопкой мыши фиксацию и выбрать Diff to Parent
, чтобы использовать инструмент сравнения, например KDiff3).И последнее представление называется annotate, которое отображает весь файл с номером ревизии в левой части каждой строки, когда эта строка была изменена в последний раз, затем вы можете навести курсор на эту строку, чтобы увидеть, кто совершил фиксацию и какое сообщение фиксации было в строке состояния.
Идентификация коммитов
Обратите внимание, что номера ревизий, которые вы видите в своей истории коммитов, могут отличаться от номеров ревизий, которые другие разработчики видят в своем локальном репозитории. Это просто потому, что числа увеличиваются в том порядке, в котором коммиты сделаны в вашем локальном репозитории.Например, если вы сделали фиксацию, а затем вытащили новую фиксацию, а затем слились, прежде чем нажимать, ваша история фиксации будет выглядеть так:
В то время как другой разработчик, который сделал новую фиксацию, после того, как он извлечет ваши изменения в его историю фиксации, будет выглядеть следующим образом:
Вместо этого надежный способ идентифицировать фиксацию при работе с другими разработчиками — это ее хэш, щелкните правой кнопкой мыши фиксацию и выберите Копировать хэш
, поскольку это будет одинаково как в вашем репозитории, так и в репозиториях других разработчиков.Назначение номера ревизии — упростить работу с Hg из консоли в вашем локальном репозитории, где номер ревизии намного короче и легче запоминается, чем хэш (вы также можете использовать только начало хеша), все команды принимают либо хэш, либо номер версии.
Обратите внимание: если вы используете hggit, то ваш локальный хеш будет отличаться от хэша коммитов удаленного репозитория, поскольку ваш локальный репозиторий является меркуриальным, а удаленный репозиторий — git, и они оба хранят коммиты по-разному, поэтому сгенерированный хэш будет другим.Не уверен, что это то же самое, что и другие разработчики, использующие hggit.
Теги — это просто метка, которую вы можете прикрепить к определенной фиксации, она хранится в файле .hgtags
в корне вашего репозитория. Это может быть полезно для таких вещей, как отметка того, какой коммит относится к конкретной версии вашего программного обеспечения, которая была выпущена. При создании тега в параметрах вы можете указать локальный тег, это просто означает, что тег является локальным только для вашего репозитория и не будет передан в удаленные репозитории, он делает это, сохраняя информацию тега под .hg / localtags
вместо этого. Параметры сообщения фиксации связаны с тем, что добавление тега автоматически добавляет фиксацию для этого изменения, и вы можете настроить, что это за сообщение фиксации, или просто использовать значение по умолчанию.
Файл настроек / включение расширений
Чтобы открыть главное диалоговое окно настроек, щелкните правой кнопкой мыши репозиторий и выберите Настройки
:
В верхней части диалогового окна настроек вы увидите две вкладки, первая — это глобальные настройки, и здесь вы можете настроить параметры по умолчанию, которые вы хотите использовать во всех ваших репозиториях.Вторая вкладка — это настройки репозитория, и они, которые могут переопределять глобальные настройки, применяются только для выбранного репозитория.
Все изменения настроек, сделанные через графический интерфейс, сохраняются в файле настроек, что позволяет легко восстановить и создать резервную копию. Он также позволяет вам вводить настройки непосредственно в файле, а не через графический интерфейс. Чтобы открыть, просто нажмите Edit File
, расположенный вверху, файл для настроек репозитория отделен от файла для глобальных настроек.
Чтобы включить различные расширения, вы можете включить их с помощью графического интерфейса:
Или прямо в файле настроек.
Если вы устанавливаете расширение, не связанное с TortoiseHg, вам необходимо указать путь к файлу. Обычно это делается путем клонирования репозитория и последующего указания пути к папке, содержащей файл с именем __init__.py
, который может быть подпапкой в репозитории.
Если вы хотите обмениваться настройками между репозиториями, но не с каждым репозиторием, который делает файл глобальных настроек, то вы можете создать новый файл настроек и импортировать его в свой файл настроек репозиториев, например:
Запросы на вытягивание
И, наконец, краткое упоминание о запросах на вытягивание или разветвлении, которые вы часто можете встретить.Это больше связано с такими сервисами, как Github или Bitbucket, чем с TortoiseHg. Идея заключается в том, что если есть проект с открытым исходным кодом, в который вы хотели бы внести свой вклад, но у вас нет прав для записи, вы должны нажать кнопку вилки на веб-странице репозитория, чтобы сделать копию репозитория под своей учетной записью. Затем вы можете клонировать этот репозиторий на свой локальный компьютер и зафиксировать изменения, которые вы отправляете обратно в онлайн-разветвленный репозиторий. Затем вы можете нажать кнопку создания запроса на перенос в своем онлайн-репозитории, который появится в исходном репозитории, в котором будут перечислены новые сделанные вами коммиты.Здесь они могут видеть объединенные различия всех ваших коммитов и комментировать то, что они хотели бы изменить, прежде чем принять это. Они могут захотеть объединить все коммиты в один или изменить существующие коммиты вместо того, чтобы создавать новые, см. Здесь, как это сделать, переписав историю. Если они его примут, запрос на перенос будет объединен с исходным репозиторием, и теперь вы внесли свой вклад в проект с открытым исходным кодом.
Другое использование — работа над собственным репозиторием в команде.Здесь вы можете создать ветку для работы над проблемой, когда вы будете готовы, вы создадите запрос на вытягивание, который проверяет другой разработчик, если они его примут, запрос на вытягивание будет объединен с основной ветвью, и ветка задачи может быть закрыта.
Связывание коммитов с онлайн-проблемами / наборами изменений
TortoiseHg может автоматически преобразовывать номера выпусков или номера плановых историй в гиперссылки на соответствующую веб-страницу.
Итак, здесь вы можете указать ссылку на проблему с github или bitbucket, которую вы исправляете. В этом примере я привязываю любой номер с префиксом «#».Но это также можно использовать для карточек планирования историй, таких как JIRA, и вы можете сделать это обязательным, чтобы не допустить совершения фиксации без таковой. Вы также можете связать хэш коммитов с онлайн-просмотром коммита. Обратите внимание, что вам может потребоваться перезапустить TortoiseHg, чтобы эти изменения вступили в силу. Ниже вы можете увидеть хэш набора изменений и номер проблемы в сообщении фиксации, преобразованном в гиперссылку:
Создание / подключение с использованием TortoiseSVN — Видеоурок по SVN (Subversion)
Обзор
Стенограммы
Файлы упражнений
Просмотр в автономном режиме
Детали курса
Учитывая, что программисты постоянно модифицируют свой код и что другие разработчики часто касаются одного и того же кода, очень важно отслеживать свои изменения.Используя системы контроля версий программного обеспечения, такие как Apache Subversion (SVN), вы можете помочь своей команде оставаться на одной странице. Из этого курса вы узнаете, как использовать SVN для отслеживания изменений кода и объединения конфликтующих изменений. Джулиан Робишо охватывает ключевые концепции и терминологию, такие как транки, фиксации и исправления, и объясняет, как создать новый проект Java, внести изменения и создать ветки. Он также рассказывает, как находить и устранять конфликты с помощью Eclipse, создавать релизы и совместно использовать SVN и Git.
Инструктор
Джулиан Робишо
Джулиан Робишо — инженер-программист, специализирующийся на Eclipse и Java.
Джулиан был профессиональным программистом в частном секторе с начала девяностых. Его карьера программиста началась с программного обеспечения BBS и баз данных, совместимых с Clipper, вскоре он перешел на платформу Lotus Notes / Domino, а затем написал программное обеспечение и приложения для технологий и систем IBM в целом. Попутно Джулиан разработал веб-сайты и даже написал несколько приложений для iPhone.
В то время как он в настоящее время работает над продуктом MarvelClient для panagenda, Джулиан работал над консалтинговыми и развивающими проектами для ряда компаний из списка Fortune 500 в США.Он также часто выступает на конференциях по системам совместной работы IBM в США и Европе. Найдите его в Twitter @jrobichaux или LinkedIn.
Узнать больше
Видеть меньше
Навыки, описанные в этом курсе
Зрители этого курса
Этот курс посмотрели 3395 человек
Связанные курсы
Добро пожаловать
«
— [Presenter] Мы подключимся к проекту еще раз, но на этот раз мы будем использовать программу TortoiseSvn в Windows.Сначала мы начнем с проекта, который уже находится на нашей локальной рабочей станции, и мы хотим загрузить его как новый проект на сервер Subversion. Мы перейдем к локальной папке проекта в проводнике Windows. Если вы хотите продолжить, это будут файлы упражнений, ноль три подчеркивание ноль пять, начало. В начальной папке есть папка под названием tortoise project, и в этой папке есть несколько файлов. Щелкните правой кнопкой мыши папку проекта черепахи и выберите TortoiseSvn, репо-браузер. Вы можете видеть, что здесь тоже есть опция импорта, но в этом случае на самом деле проще использовать репо-браузер напрямую.Нам нужен URL-адрес, и мы можем получить его с нашего сервера VisualSVN. Я переключаюсь на консоль управления сервером VisualSVN, щелкаю репозиторий правой кнопкой мыши и выбираю копировать URL-адрес в буфер обмена. В TortioseSVN я могу вставить этот URL и нажать ОК. В репо-браузере могу правильно…
Практикуйтесь во время обучения с файлами упражнений
Загрузите файлы, которые инструктор использует для проведения курса.Следуйте инструкциям и учитесь, наблюдая, слушая и практикуя.
Скачивайте курсы и учитесь на ходу
Смотрите курсы на мобильном устройстве без подключения к Интернету. Загрузите курсы с помощью приложения LinkedIn Learning для iOS или Android.
.
Добавить комментарий