Как выполнять обновление и фиксацию пакета в SVN в файловой системе
Glossary Item Box
Общие сведения
При работе с SVN может возникнуть ситуация, когда два разработчика работают над одной и той же функциональностью, реализованной в одном и том же файле. Если первый разработчик сохранит свои изменения первым, а второй — несколькими секундами позже, то изменения, внесенные первым разработчиком могут быть затерты. И хотя эти изменения запомнены системой, правки, внесенные первым разработчиком, будут отсутствовать в последней ревизии файла. Чтобы избежать подобной проблемы, используются две модели управления версиями — "Блокирование-Изменение-Разблокирование" и "Копирование-Изменение-Слияние" (см. "Работа с SVN в файловой системе").
Независимо от выбранной модели, действия при обновлении и фиксации изменений в хранилище практически одинаковые.
Описание примера
В конфигурацию bpm'online установлен пользовательский пакет sdkPackageInFileSystem (см. "Создание пакета в режиме разработки в файловой системе"). В режиме разработки в файловой системе выполнить его обновление, а после изменения содержимого — фиксацию в хранилище.
Обновление пакета из хранилища
Для получения последней ревизии пакета необходимо в каталоге ..\Terrasoft.WebApp\Terrasoft.Configuration\Pkg выделить нужный пакет и выполнить команду [SVN Update] (рис. 1).
Рис. 1. — Команда [SVN Update]
После выполнения команды отобразится информационное окно с результатами обновления (рис. 2).
Рис. 2. — Результат обновления
В результате были обновлены файл дескриптора пакета descriptor.json (поменялась дата редактирования пакета) и исходный код схемы UsrGreetingService. Исходный код схемы приведен ниже:
namespace Terrasoft.Configuration { using System.ServiceModel; using System.ServiceModel.Activation; using System.ServiceModel.Web; [ServiceContract] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] public class UsrGreetingService : System.Web.SessionState.IReadOnlySessionState { [OperationContract] [WebInvoke(Method = "GET", UriTemplate = "Hello")] public string TestHello() { return "Hello!"; } } }
ВАЖНО
Чтобы изменения попали в базу данных приложения, необходимо в разделе [Конфигурация] выполнить действие [Обновить пакеты из файловой системы]. Если были изменены схемы объектов или схемы исходного кода, то для применения изменений также необходимо выполнить шаги 3 — 6 последовательности действий, приведенной в статье "Как установить существующий пакет из SVN в режиме разработки в файловой системе".
Изменение содержимого пакета
После обновления пакета можно приступать к изменению его содержимого. Например, можно изменить исходный код схемы UsrGreetingService.cs, добавив в нее метод TestHelloWorld().
namespace Terrasoft.Configuration { using System.ServiceModel; using System.ServiceModel.Activation; using System.ServiceModel.Web; [ServiceContract] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] public class UsrGreetingService : System.Web.SessionState.IReadOnlySessionState { [OperationContract] [WebInvoke(Method = "GET", UriTemplate = "Hello")] public string TestHello() { return "Hello!"; } [OperationContract] [WebInvoke(Method = "GET", UriTemplate = "HelloWorld")] public string TestHelloWorld() { return "Hello world!"; } } }
Фиксация пакета в хранилище
Чтобы зафиксировать изменения в хранилище, необходимо в каталоге ..\Terrasoft.WebApp\Terrasoft.Configuration\Pkg выделить нужный пакет и выполнить команду [SVN Commit...] (рис. 1).
После этого появится окно свойств ревизии (рис. 3), в котором будут отображены измененные файлы (1). В этом же окне можно оставить короткое описание изменений, выполненных в этой ревизии (2). Фиксация в хранилище выполняется после нажатия кнопки [OK].
Рис. 3. — Окно свойств ревизии
Процесс фиксации изменений в хранилище отображается в информационном окне (рис. 4).
Рис. 4. — Результат фиксации изменений