Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Система контроля версий  (Прочитано 13971 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Люсь
Команда клуба

ru
Offline Offline
Пол: Женский

« : 15-04-2009 05:11 » 

У меня курсовая работа по теме: "Реализация системы контроля версий"
Буду писать на с++ билдере

Программа должна иметь следующие особенности:
Работа в сети. Основные операции
add/delete files
get latest version
check out
chek in


Из словаря:
Цитата
check-in, commit, submit
Создание новой версии, публикация изменений. Распространение изменений, сделанных в рабочей копии, на хранилище документов. При этом в хранилище создаётся новая версия изменённых документов.
check-out, clone
Извлечение документа из хранилища и создание рабочей копии.


Примерно с теорией принципов работы таких программ ознакомилась, сами программы ещё не смотрела, на АГМК никто такое не использует, придётся качать и тестировать самой.

Посоветовали использовать базу данных для реализации такой программы, собственно, поэтому в этом разделе и пишу.

Вопрос: что можете посоветовать? Как реализовать? Какие идеи? Как организовать работу в сети? Как избежать конфликтов обращения клиентов? Что записать в базу? Какие могут быть ньюансы?

Я тут узнаю много чего нового, пока общаюсь с людьми Улыбаюсь Может и у Вас чего нового почерпну...

Работа в сети - для меня совершенно белое пятно в программировании.
Работа с базой из с++ билдера тоже для меня незнакома.
Работа с файлами сопровождалась несовершенным кодом и глюками в работе.



О логике:

Надо так:

Централизованная модель - имеется единое хранилище документов, управляемое специальным сервером, который и выполняет бо́льшую часть функций по управлению версиями.

Пользователь, работающий с документами, должен сначала получить нужную ему версию документа из хранилища; обычно создаётся локальная копия документа, т. н. «рабочая копия».

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

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

Пользователь просто работает с файлом, как обычно, и при сохранении файла автоматически создаётся новая версия.

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

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




В голове сумбур по поводу того, что означает "линейная" версионность (РХЛ).

В словаре:
Цитата
trunk, mainline
Ствол — основная ветвь разработки проекта. Политика работы со стволом может отличаться от проекта к проекту, но в целом она такова: большинство изменений вносится в ствол; если требуется серьёзное изменение, способное привести к нестабильности, создаётся ветвь, которое сливается со стволом, когда нововведение будет в достаточной мере испытано; перед выпуском очередной версии создаётся «релизная» ветвь, в которую вносятся только исправления.




Для себя сюда скину ссылки, которые надо будет прочитать
http://ru.wikipedia.org/wiki/Система_управления_версиями
http://ru.wikipedia.org/wiki/Subversion
https://forum.shelek.ru/index.php/topic,970.0.html
https://forum.shelek.ru/index.php/topic,6966.0.html
« Последнее редактирование: 15-04-2009 09:52 от Люсь » Записан

Посторонним просьба не беспокоить!
-------------------------------------------------
O (I) Rh +
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 15-04-2009 06:13 » 

Конфликты момента обращения разруливаются блокировкой отдельных файлов, директорий, записей в базе или целых проектов. Применяют также транзакционный подход.

В базу можно писать как полностью новые копии файлов, так и разницу между версиями (например, diff).

Структура версий может быть древовидная и линейная. Думаю, что в твоем случае лучше второе.

Вообще, надо начать с проектирования логики, а как работать в сети, хранить в БД и т.п. можно позже разобрать.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 15-04-2009 07:16 » 

Сначала лучше начать с более детальной проработки требованпий и празработки модели прецедентов Улыбаюсь. Просто как раз отсутствие требований по указанию изменившихся фрагменвто может сразу откинуть вот этот момент 
Цитата
так и разницу между версиями (например, diff).
. А это существенно упрощает задачу.
Записан

ещё один вопрос ...
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 15-04-2009 07:44 » 

nikedeforest, думаю, что никак не упрощает. Работать с полной копией проще, чем с разницей. Выйгрыш только в занимаемом объеме.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 15-04-2009 08:29 » 

Так я вроде о том и сказал, что если не надо выяывлять изменившуюся часть, а только надо выянсять сам факт изменения, то это упрощает задачу?
Записан

ещё один вопрос ...
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #5 : 15-04-2009 08:33 » 

выявить изменившуюся часть можно при сравнении двух файлов, а сохранять имхо лучше файл целиком, прижав его архиватором
Записан

nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 15-04-2009 08:40 » 

выявить изменившуюся часть можно при сравнении двух файлов
Неуверен, что это так легко. Все понятно, когда ты _зменил_ один символ другим. А вот когда ты вставил дргуие символы, или удалил кусок, вот здесь уже надо будет голову-то приложить ... . Или я преувеличиваю?
Записан

ещё один вопрос ...
Люсь
Команда клуба

ru
Offline Offline
Пол: Женский

« Ответ #7 : 15-04-2009 08:44 » 

Я думаю, мне достаточно брать самые упрощённые варианты для решения. Сроки-то сжатые.
ТЗ разрабатываю пока. Потом выложу, что надумала, что вычитала и что подсказали )
Записан

Посторонним просьба не беспокоить!
-------------------------------------------------
O (I) Rh +
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #8 : 15-04-2009 09:44 » 

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

если так, то как узнать, что меняли, сохранять весть стек UNDO ?
Записан

Люсь
Команда клуба

ru
Offline Offline
Пол: Женский

« Ответ #9 : 15-04-2009 09:56 » 

Прорабатывать детали и описывать прояснённые для себя вопросы буду в первом же посте.

Ром.
Объясни поподробнее про линейную  структуру версий? Я тут начала над этим думать, и сломала голову.

Записан

Посторонним просьба не беспокоить!
-------------------------------------------------
O (I) Rh +
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 15-04-2009 10:29 » 

Цитата
если так, то как узнать, что меняли, сохранять весть стек UNDO ?
зачем, пользователь выгрузил из репозитария, в этот момент ставится флаг, что файл в разработке. Он поработал с ним, сохранил изменения и загружает обратно, при этом файлу присваивается новая версия. Отрицательный момент в том, что пользователь может выгрузить и загрузить файл, не изменив его, тогда новая версия не будет отличаться от предыдущей. Не думаю что это сильно критично, учитывая, что это учебнгое задание
Записан

ещё один вопрос ...
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #11 : 15-04-2009 10:41 » 

Цитата
Отрицательный момент в том, что пользователь может выгрузить и загрузить файл, не изменив его

ну это то как раз в два счёта определяется - по содержимому файла )
Записан

nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #12 : 15-04-2009 12:10 » 

ну да, можно побайтовое сравнение сделать
Записан

ещё один вопрос ...
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines