![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Управление версионированием проекта... [D7, WinXP]
Makhanev A.S. © (2005-09-09 11:12:00)Есть проект (в широком смысле слова), включающий в себя ряд компонентов и delphi проектов (dprs).
Нужно управлять версионированием, чтобы всегда можно было сделать откат назад.
Пока что это делается криво и неполноценно, т.к. не охота каждый раз переустанавливать компоненты.
Если с delphi-проектами нет проблем (создал другую папку и вперед), с компонентами надо возиться (переустанавливать, пути перепрописывать)
Какие могут быть наиболее удобные решения?
Наиль (2005-09-12 09:53:00) [1]Для того, чтобы легче было разбираться с профилями в WinRar можете создать файл 1.reg такого содержания (и запустите его):
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\WinRAR\Profiles\5]
"Name"="Бурение"
"Default"=dword:00000000
"ImmExec"=dword:00000000
"CurDir"="C:\\Program Files\\ICQ\\shared files"
"ExclNames"="*.dcu *.~* *.exe *.db *.mb *.px *.xg* *.yg* "
"StoreNames"=""
"UseRAR"=dword:00000001
"SFXModule"=""
"SFXIcon"=""
"CmtFile"=""
"CmtText"=""
"VolumeSize"="0"
"VolPause"=dword:00000000
"OldVolNames"=dword:00000000
"RecVolNumber"=dword:00000000
"Update"=dword:00000000
"Fresh"=dword:00000000
"SyncFiles"=dword:00000000
"Move"=dword:00000000
"Solid"=dword:00000001
"AV"=dword:00000000
"Test"=dword:00000000
"Recovery"=dword:ffffffff
"EraseDest"=dword:00000000
"AddArcOnly"=dword:00000000
"ClearArc"=dword:00000000
"Lock"=dword:00000001
"Method"=dword:00000005
"DictSizeLZ"=dword:00400000
"Background"=dword:00000001
"Shutdown"=dword:00000000
"Password"=hex:49
"EncryptHeaders"=dword:00000000
"OpenShared"=dword:00000000
"ProcessOwners"=dword:00000000
"SaveStreams"=dword:00000000
"GenerateArcName"=dword:00000001
"VersionControl"=dword:00000000
"GenerateMask"="eee(hh_mm)"
"FileTimeMode"=dword:00000000
"FileDays"=dword:00000000
"FileHours"=dword:00000000
"FileMinutes"=dword:00000000
"FileTimeBefore"=dword:88000000
"FileTimeAfter"=dword:88000000
"ArcTimeOriginal"=dword:00000000
"ArcTimeLatest"=dword:00000000
"mtime"=dword:00000004
"ctime"=dword:00000000
"atime"=dword:00000000
"PathsAbs"=dword:00000000
"PathsNone"=dword:00000000
"SeparateArc"=dword:00000000
"EmailArcTo"=""
"PackDetails"=hex:00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
"ArcName"="C:\\Documents and Settings\\Пользователь\\Мои документы\\CyberLink\\Наиль\\Delphi\\ПОД ЗАКАЗ\\АРХИВЫ\\Бурение.rar"
"FileNames"="\"C:\\Documents and Settings\\Пользователь\\Мои документы\\CyberLink\\Наиль\\Delphi\\ПОД ЗАКАЗ\\Бурение\" \"C:\\Program Files\\Borland\\Delphi7\\MyLib\" "
После этого можете проанализировать его через WinRar
Наиль (2005-09-12 09:40:00) [2]Так я работаю один, то пользуюсь простым способом версионирования проекта. Для этого использую возможности профелей WinRar. Я указываю папки которые нужно архивировать. К названию архива добавляю номер дня (можно дату) и время. Исключаю из архива dcu, exe и ~-файлы. Сохраняю профиль в режиме автоисполнения на рабочий стол.
Мне этого хватает.
Но при желании можно расширить возможности, добавляя комментарий из файла, настраивая пути разархивирования и автозапуск компиляции распакованных файлов.
У меня архивация происходит по расписанию каждые 3 часа.
Но можно внедрить в проект такой модуль:
Unit SaveProject;
...
initialization
// Создание файла комментария и других полезных файлов
...
// Запуск архивации
ShellExecute(...,'Путь к ярлыку профиля на рабочем столе',...);
end.
Внедрить - означает упомянуть модуль в любом uses.
Dilmo (2005-09-12 08:02:00) [3]при большом количестве различных дефайнов двойной инклюд конечно решает проблему
Наиль (2005-09-12 07:50:00) [4]>[18]
Этот подход более чем правильный.
Вместо исправления, лучше использовать двойной Include.
Во всех юнитах прописывается {$INCLUDE 'defines.inc'}
А в нём самом одна строчка
{$INCLUDE 'Defines1.inc'}
Таким образом, можно сделать Defines1, Defines2 и т.д. и ссылаться на нужный из них.
Dilmo (2005-09-12 07:21:00) [5]Ни разу не пользовались Project->Options->Conditionals
вот хоть убейте, может и не правильно это, у нас для условной компиляции есть файл... в нем прописываются все DEFINE
и он подключается командой {$INCLUDE '<имя файла>'} во всех юнитах, где необходима эта самая условная компиляция, далее подправляешь этот самый файл так как тебе надо и билдишь
возможно такой подход поможет
Гаврила (2005-09-11 01:07:00) [6]
> Makhanev A.S.
Нет. Пути(path) разные, смысла не имеет. Необходимая информация ищется в справке за 20 секунд. Еще 10 минут уходит на подготовку bat
Makhanev A.S. (2005-09-11 00:55:00) [7]
> Гаврила © (10.09.05 14:05) [15]
можете ваш bat файл на мыло в приват кинуть?
Гаврила (2005-09-10 14:05:00) [8]
> Makhanev A.S.
> мы делаем несколько билдов одной версии в зависимости
> от директив условной компиляции
С коммандной строки.
> в то, что там нужно было указывать все используемые
> либы
нужно не полениться и указать, это один раз делается (bat файл например)
> если не ошибаюсь, он не хотел компилить либы сторонних
> разработчиков.
должен компилить
Makhanev A.S. (2005-09-10 13:32:00) [9]никто не в курсе?
Makhanev A.S. (2005-09-09 15:38:00) [10]Попутный вопрос:
мы делаем несколько билдов одной версии в зависимости от директив условной компиляции. Неудобство в том, что каждый раз надо лезть в project options, condtitionals... выставлять их там и билдить заново.
попытки изучить интерфейс командной строки делфегого компилятора уперлись в то, что там нужно было указывать все используемые либы. и, если не ошибаюсь, он не хотел компилить либы сторонних разработчиков.
есть ли у вас подобная задача, если есть - как решаете?
Dilmo (2005-09-09 14:06:00) [11]да, в этом поле прописываются все пути к файлам которые не включены в проект, но используются в uses
Dilmo (2005-09-09 14:05:00) [12]да
Makhanev A.S. (2005-09-09 14:04:00) [13]
> Dilmo (09.09.05 13:52) [9]
Вы имеете в виду поле search path?
Dilmo (2005-09-09 13:52:00) [14]в принципе есть еще такая вещь
можно пути прописывать не в Enviroment->Libs
а в Project->Options для конкретного проекта ну и писать относительные пути то есть не C:\Work\Component1\
а ..\Component1
тогда при копирование из одного каталога в другой проблем будет намного меньше, если скопировать всю структуру каталогов
Makhanev A.S. (2005-09-09 13:43:00) [15]о, теперь ясно.
спасибо за ответы.
Dilmo (2005-09-09 13:34:00) [16]да
Makhanev A.S. (2005-09-09 13:31:00) [17]Т.е. delphi всегда ссылается на одни и те же папки (environment->libs)? А уже с помощью VSS мы в них выкладываем хоть позапрошлую версию, хоть текущую. И в Delphi остается только перебилдить все это дело - так?
Dilmo (2005-09-09 13:07:00) [18]зачем чего то копировать ?
Допустим лежит у Вас проект
C:\Work\Project1
И пара компонент
C:\Work\Component1
C:\Work\Component2
В проекте стоит ссылка на компоненты, в юзесах прописаны нужные файлы, ну или можно bpl использовать, не суть важно..
Ктото другой поправил на своей машине одну из компонент, он заливает эти новые исходники в Source Safe вы их оттуда получаете в качестве последней версии и уже работаете с новой версией... это сложновато объяснить так вот на пальцах, советую поставить какую либо систему и посомтреть как это все работает
про Source Safe можете у меня спросить :)
Makhanev A.S. (2005-09-09 12:53:00) [19]Т.е. чтобы обновить свой компонент нужно скопировать новые файлы в папку, на которую ссылается Delphi и перебилдить компонент/проект, или каждый раз меняете ссылки из Delphi на новый компонент, удаляя предыдущий и устанавливая новый?
Dilmo (2005-09-09 12:47:00) [20]ну если конкретный опыт то пожалуйста:
Мы пользуемся VSS (Visual Source Safe) есть недостатки, но пока для работы хватает
проекты и компоненты самописные все в виде исходников там и лежит и соотвественно можно сбилдить любую версию, если компоненты готовые, откуда то слева, то они не так часто меняются и у нас честно говоря не возникало необходимости их версионность поддерживать, достаточно последней версии и все..
что еще интересует ?