Санкт-Петербургский Национальный Исследовательский Университет

Информационных Технологий, Механики и Оптики

ФКТиУ, кафедра Информатики и прикладной математики

Лабораторная работа №2

по дисциплине

«Основы программной инженерии»

Вариант № 000

Выполнил: Студент группы P3119

Преподаватель: тьютор кафедры ВТ

Санкт-Петербург

2017 г.

Оглавление

Задание:        1

Git        1

Svn        3

Вывод        4

Задание:


Сконфигурировать в своём домашнем каталоге репозитории svn и git и загрузить в них начальную ревизию файлов с исходными кодами (в соответствии с выданным вариантом).

Воспроизвести последовательность команд для систем контроля версий svn и git, осуществляющих операции над исходным кодом, приведённые на блок-схеме.

При составлении последовательности команд необходимо учитывать следующие условия:

Цвет элементов схемы указывает на пользователя, совершившего действие (красный - первый, синий - второй).

Цифры над узлами - номер ревизии. Ревизии создаются последовательно.

Необходимо разрешать конфликты между версиями, если они возникают.

Git

№R

User

Commands

0

1

git config --global user. name "Zavodov User1"

git config --global user. email "*****@***com"

# переходим в директорию проекта

git init

git add.

git commit - m "r0"

1

2

git config --global user. name "Zavodov User2"

git config --global user. email "andrei. *****@***ru"

git checkout - b branch2

git add.

git commit - m "r1"

2

1

git config --global user. name "Zavodov User1"

git config --global user. email "*****@***com"

git checkout master

git add.

git commit - m "r2"

3

2

git config --global user. name "Zavodov User2"

git config --global user. email "andrei. *****@***ru"

git checkout branch2

git add.

git commit - m "r3"

4

1

git config --global user. name "Zavodov User1"

git config --global user. email "*****@***com"

git checkout master

git add.

git commit - m "r4"

5

2

git config --global user. name "Zavodov User2"

git config --global user. email "andrei. *****@***ru"

git checkout - b branch3

git add.

git commit - m "r5"

6

2

git checkout branch2

git add.

git commit - m "r6"

7

2

git checkout branch3

git add.

git commit - m "r7"

8

1

git config --global user. name "Zavodov User1"

git config --global user. email "*****@***com"

git checkout master

git add.

git commit - m "r8"

9

2

git config --global user. name "Zavodov User2"

git config --global user. email "andrei. *****@***ru"

git checkout branch3

git add.

git commit - m "r9"

10

2

git add.

git commit - m "r10"

11

2

git add.

git commit - m "r11"

12

2

git add.

git commit - m "r12"

13

2

git checkout branch2

git merge --no-ff --no-commit branch3

git status

#разрешаем конфликты в файлах, о которых говорит git status

git add.

git commit - m "r13"

14

1

git config --global user. name "Zavodov User1"

git config --global user. email "*****@***com"

git checkout master

git merge --no-ff --no-commit branch2

git status

#разрешаем конфликты в файлах, о которых говорит git status

git add.

git commit - m "r14"


Svn

№R

User

Commands

-

-

#переходим в директорию для хранилищ

svnadmin create repo

mkdir wd

cd wd

svn checkout file:///F:/svn/repo.

0

1

#копируем в рабочую директорию файлы из ревизии 0

svn add *

svn commit - m r0 --username=user1

1

2

svn copy file:///F:/svn/repo/trunk file:///F:/svn/repo/branches/branch2 - m "New branch2"

svn switch file:///F:/svn/repo/branches/branch2

#кидаем файлы из ревизии 1

svn add * --force

svn commit - m r1 --username=user2

2

1

svn switch file:///F:/svn/repo/trunk

#кидаем файлы из ревизии 2

svn add * --force

svn commit - m r2 --username=user1

3

2

svn switch file:///F:/svn/repo/branches/branch2

#кидаем файлы из ревизии 3

svn add * --force

svn commit - m r3 --username=user2

4

1

svn switch file:///F:/svn/repo/trunk

#кидаем файлы из ревизии 4

svn add * --force

svn commit - m r4 --username=user1

5

2

svn copy file:///F:/svn/repo/trunk file:///F:/svn/repo/branches/branch3 - m "New branch3"

svn switch file:///F:/svn/repo/branches/branch3

#кидаем файлы из ревизии 5

svn add * --force

svn commit - m r5 --username=user2

6

2

svn switch file:///F:/svn/repo/branches/branch2

#кидаем файлы из ревизии 6

svn add * --force

svn commit - m r6 --username=user2

7

2

svn switch file:///F:/svn/repo/branches/branch3

#кидаем файлы из ревизии 7

svn add * --force

svn commit - m r7 --username=user2

8

1

svn switch file:///F:/svn/repo/trunk

#кидаем файлы из ревизии 8

svn add * --force

svn commit - m r8 --username=user1

9

2

svn switch file:///F:/svn/repo/branches/branch3

#кидаем файлы из ревизии 9

svn add * --force

svn commit - m r9 --username=user2

10

2

#кидаем файлы из ревизии 10

svn add * --force

svn commit - m r10 --username=user2

11

2

#кидаем файлы из ревизии 11

svn add * --force

svn commit - m r11 --username=user2

12

2

#кидаем файлы из ревизии 12

svn add * --force

svn commit - m r12 --username=user2

13

2

svn switch file:///F:/svn/repo/branches/branch2

svn merge file:///F:/svn/repo/branches/branch3

#решаем конфликты

#кидаем файлы из ревизии 13

svn add * --force

svn commit - m r13 --username=user2

14

1

svn switch file:///F:/svn/repo/trunk

svn merge file:///F:/svn/repo/branches/branch2

#решаем конфликты

#кидаем файлы из ревизии 14

svn add * --force

svn commit - m r14 --username=user1


Вывод

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