Аннотация :
Управление исходными текстами является маленькой частью большой и сложной науки управления созданием программного обеспечения. Тем не менее, это одна из важнейших частей с точки зрения автоматизации, поскольку маленький и, в общем, несложный механизм обеспечивает информацией множество других частей общего бизнес-процесса. Управление исходными текстами имеет несколько аспектов: управление версиями, автоматическая генерация документации, поддержка единого стиля кода и контролируемые изменения. Постепенно мы раскроем все эти темы, но начнём, пожалуй, с наиболее востребованной части – управлением версиями.
Здравствуйте, orangy, Вы писали:
O>Статья : O>Управление исходными текстами
что-то я по-первости не въеду в следующую вещи —
a) CVS не работает с не-текстовыми файлами? Т.е. можно ли контролировать например картинку, которая входит в ресурсы проекта, иметь возможность откатить ее версию?
б) примерчик с каталогом в котором пара текстовых файлах расписан доходчиво а как правильно добавлять в CVS каталог с проектом, где надо контролировать не все файлы, например без тех же бинарников?
Еще одна непонятка связана с WinCVS — при запуске просит Python 2.1 или новее, ладно, поставил Python 2.3, а оно все равно говорит — поставь 2.1 или новее
Здравствуйте, Odi$$ey, Вы писали:
OE>a) CVS не работает с не-текстовыми файлами? Т.е. можно ли контролировать например картинку, которая входит в ресурсы проекта, иметь возможность откатить ее версию?
Работает, только всегда сохраняет полную копию редакции файла, и не умеет их мерджить. Что вобщем-то, логично. Чтобы добавить бинарный файлв в CVS нужно перед его именем поставить "-kb". Или нажать кнопку Add binary в WinCVS.
OE>б) примерчик с каталогом в котором пара текстовых файлах расписан доходчиво а как правильно добавлять в CVS каталог с проектом, где надо контролировать не все файлы, например без тех же бинарников?
Можно делать по разному, например по маске, но опыт показывает, что удобнее подготовить отдельную копию проекта, в котором будут только файлы, подлежащие контролю версий, а затем импортировать поддерево целиком.
OE>Еще одна непонятка связана с WinCVS — при запуске просит Python 2.1 или новее, ладно, поставил Python 2.3, а оно все равно говорит — поставь 2.1 или новее
Это для скриптов, если ты собираешься использовать WinCVS по-простому, просто игонрируй это сообщение в output window. Я всё делаю из командной строки, так что здесь тебе не подскажу.
[RSDN@Home 1.1 beta 2] Сейчас 21:17, слушаю тишину
Я взял из репозитария файл "предыдущей" редакции, по номеру версии (1.4), исправил и теперь не могу отправить назад в репозитарий, WinCVS пишет
cvs commit: sticky tag `1.4' for file `filename.cpp' is not a branch
cvs [commit aborted]: correct above errors first!
в статье есть пара слов про то, как в подобном случае взять последнюю версию из репозитария, а вот как наоборот, мою копию в репозитарий положить :???:
Здравствуйте, S-SH, Вы писали:
>> Я взял из репозитария файл "предыдущей" редакции, >> исправил и теперь не могу отправить назад в репозитарий
SS>Полагаю, надо сохранить у себя исправленную, check-out SS>последнюю, заменить на исправленную и сделать check-in.
да, меня orangy уже по аське проконсультировал, только так и получилось
А можно ли указать при check-out рабочего каталога что мне нужны и еще какие то связанные библиотеки? То есть, я забираю только рабочий каталог, а cvs (читая свои конфиги или мои ) следом мне еще добрасывает и все библиотеки которые я указал?
Здравствуйте, ironwit, Вы писали:
I>А можно ли указать при check-out рабочего каталога что мне нужны и еще какие то связанные библиотеки? То есть, я забираю только рабочий каталог, а cvs (читая свои конфиги или мои ) следом мне еще добрасывает и все библиотеки которые я указал?
Здравствуйте, Dimentiy, Вы писали:
D>Здравствуйте, ironwit, Вы писали:
I>>А можно ли указать при check-out рабочего каталога что мне нужны и еще какие то связанные библиотеки? То есть, я забираю только рабочий каталог, а cvs (читая свои конфиги или мои ) следом мне еще добрасывает и все библиотеки которые я указал?
D>Нет. А ещё CVS не умеет гопака плясать
ха-ха. Имелось в виду, можно ли CVS указать явно, что если я обновляю определенный рабочий каталог, то следом мне нужно отдать еще несколько рабочих каталогв?
Здравствуйте, ironwit, Вы писали:
I>ха-ха. Имелось в виду, можно ли CVS указать явно, что если я обновляю определенный рабочий каталог, то следом мне нужно отдать еще несколько рабочих каталогв?
Не смешно
Имелось в виду, что CVS не может и не должен знать, какие там зависимости. Почему не написать скриптик, который будет чекаутить проект[ы], копировать библиотеки, собирать автоматом софт и после этого форматировать винчестер — в одном флаконе?
У меня например по расписанию раз в два дня компьютер созванивается с провайдером, апдейтит рабочую копию и вешает трубку. Обычный bat-файл, несколько строчек. А в системе управления версиями это не нужно.
Здравствуйте, Dimentiy, Вы писали:
I>>А можно ли указать при check-out рабочего каталога что мне нужны и еще какие то связанные библиотеки? То есть, я забираю только рабочий каталог, а cvs (читая свои конфиги или мои ) следом мне еще добрасывает и все библиотеки которые я указал?
D>Нет. А ещё CVS не умеет гопака плясать
Не скажите, батенька, можно научить Там есть такой файлик modules в CVSROOT, так там можно делать алиас-модули, состоящие из ссылок на несколько других модулей. Подробнее читайте Седерквиста.
Здравствуйте, orangy, Вы писали:
O>Здравствуйте, Dimentiy, Вы писали:
I>>>А можно ли указать при check-out рабочего каталога что мне нужны и еще какие то связанные библиотеки? То есть, я забираю только рабочий каталог, а cvs (читая свои конфиги или мои ) следом мне еще добрасывает и все библиотеки которые я указал?
D>>Нет. А ещё CVS не умеет гопака плясать O>Не скажите, батенька, можно научить Там есть такой файлик modules в CVSROOT, так там можно делать алиас-модули, состоящие из ссылок на несколько других модулей. Подробнее читайте Седерквиста.
Здравствуйте, ironwit, Вы писали:
D>>>Нет. А ещё CVS не умеет гопака плясать O>>Не скажите, батенька, можно научить Там есть такой файлик modules в CVSROOT, так там можно делать алиас-модули, состоящие из ссылок на несколько других модулей. Подробнее читайте Седерквиста.
Ну, это всё-таки не общий случай )) Хотя anyway посыпаю голову пеплом.
I>P.S. а кто такой Седерквист?
Здравствуйте, Dimentiy, Вы писали:
D>Здравствуйте, ironwit, Вы писали:
D>У меня например по расписанию раз в два дня компьютер созванивается с провайдером, апдейтит рабочую копию и вешает трубку. Обычный bat-файл, несколько строчек. А в системе управления версиями это не нужно.
Послушай, а ты не можешь предоставить батник который делает следующее с CVS:
— выполняет обновление проекта
— затем добавлет ные файлы в CVS
— затем выполняет комит всему проекту
— затем ставит метку на проект
у меня затык с тем что бы определить только что добавленные файлы в проект и как определить какие файлы надо комитить
Здравствуйте, orangy, Вы писали:
O>...Я всё делаю из командной строки, так что здесь тебе не подскажу.
Mozhno li s kommandnoi stroki skachat' versiju cherez pserver?
U menja eto poka ne poluchalos'
Здравствуйте, raskolnikov, Вы писали:
R>Здравствуйте, orangy, Вы писали:
O>>...Я всё делаю из командной строки, так что здесь тебе не подскажу. R>Mozhno li s kommandnoi stroki skachat' versiju cherez pserver? R>U menja eto poka ne poluchalos'
Вообще говоря, WinCVS в конечном итоге запускает cvs.exe с какими-то параметрами, так что из командной строки можно сделать всё.
Понятия "скачать версию" в CVS нет, ты имеешь ввиду checkout или update?
pserver ничем не отличается от других протоколов с точки зрения командной строки, всё определяет CVSROOT. Возможно, нужно просто залогиниться или правильно составить CVSROOT для анонимного пользователя.
Например, чтобы получить из репозитория RFD можно сделать так:
cvs -d :pserver:anonymous@cvs.sourceforge.net:/cvsroot/rsdn-data co Rsdn.Framework.Data
Тут недоразумение было. В c:/winnt
лежала старая версия cvs не поддерживающая pserver-протокол.
Я пытался стартануть cvs.exe в
WinCvs папке, а неявно вызывалась c:/winnt/cvs.exe, которая говорила:
:pserver: access method not supported
Вот я и думал что pserver-соединение реализует WinCvs.
С уважением,
Валентин
Здравствуйте, orangy, Вы писали:
O>Здравствуйте, raskolnikov, Вы писали:
R>>Здравствуйте, orangy, Вы писали:
O>>>...Я всё делаю из командной строки, так что здесь тебе не подскажу. R>>Mozhno li s kommandnoi stroki skachat' versiju cherez pserver? R>>U menja eto poka ne poluchalos' O>Вообще говоря, WinCVS в конечном итоге запускает cvs.exe с какими-то параметрами, так что из командной строки можно сделать всё.
Здравствуйте, orangy, Вы писали:
O>Постепенно мы раскроем все эти темы, но начнём, пожалуй, с наиболее востребованной части – управлением версиями.
Как то давно снес и winCVS и TortoiseCVS потому что непонял хитростей помню, что кто-то из них даже ронял мне проводник с которым сильно тесно интегрировался но дело было давно
Честно говоря с тех пор, не углублялся в руководство по пользованию CVS, но хочется выяснить один момент от практиков — возможно ли при отслеживании и получении рабочих копий файлов разкладывать их по другому, т.е. в "по-своему вкусу" настроенную стуктуру подкаталогов, отличную от структуры подкаталогов центрального репозитория? Это возможно?
Hello, mister-AK!
You wrote on Wed, 11 Aug 2004 11:20:38 GMT:
O>> Постепенно мы раскроем все эти темы, но начнём, пожалуй, с наиболее O>> востребованной части – управлением версиями.
при определенной сноровке такое возможно в Subversion
Здравствуйте, orangy, Вы писали:
O>Аннотация : O>Управление исходными текстами является маленькой частью большой и сложной науки управления созданием программного обеспечения. Постепенно мы раскроем все эти темы, но начнём, пожалуй, с наиболее востребованной части – управлением версиями.
Здравствуйте. можете дать пример того как одним батником выполнить следующие действия:
— Update
— Add contents
— Commit
— Tag vx.y.z.k, where x, y,z,k — variables
or
— Add contents
— Commit
— Tag vx.y.z.k, where x, y,z,k — variables
Здравствуйте, qwert2002, Вы писали:
Q>Здравствуйте. можете дать пример того как одним батником выполнить следующие действия: Q>- Update
cvs update
Q>- Add contents
cvs add ...files...
Q>- Commit
cvs commit -m "message"
Q>- Tag vx.y.z.k, where x, y,z,k — variables
cvs tag
Здравствуйте, orangy, Вы писали:
O>Здравствуйте, qwert2002, Вы писали:
Q>>Здравствуйте. можете дать пример того как одним батником выполнить следующие действия: Q>>- Update O>cvs update
Q>>- Add contents O>cvs add ...files...
ах ну да, конечно. Только как получить список файлов и каталогов, которые надо добавить или обновить в репозиторий — в этом-то и есть вопрос? Команды CVS я то же знаю :).
Здравствуйте, qwert2002, Вы писали:
Q>ах ну да, конечно. Только как получить список файлов и каталогов, которые надо добавить или обновить в репозиторий — в этом-то и есть вопрос? Команды CVS я то же знаю .
Q>Надеюсь, что решение простое
Нет решения, ибо нельзя определить какие из файлов, находящихся в подкаталогах подлежать контролю версий, а какие нет. *.exe, *.dll, *.lib находятся в подкаталогах проекта, но в CVS им делать вобщем-то нечего. Но бывают ситуации, когда и есть чего. На основании какой информации bat-файл (или отдельный exe-ник) должен решить — добавлять файл в CVS или нет? Про бинарность тоже отдельный вопрос, файлы с русскими комментариями CVS усиленно пытается трактовать как бинарные. А что он должен делать, если в файле есть буквы из почти всего диапазона ASCII?
Единственный путь, который я вижу на тему автоматизации процесса — это либо использовать плагин к Visual Studio (или другой IDE), либо парсить файлы проекта и выполнять соответствующие команды CVS.
Q>ах ну да, конечно. Только как получить список файлов и каталогов, которые надо добавить
Новые файлы, которые надо бы добавить:
cvs -q -n up | egrep '^\?' | sed 's/^\?//' | xargs cvs add
Q>или обновить в репозиторий — в этом-то и есть вопрос?
Измененные файлы:
cvs -q -n up | egrep '^M' | sed 's/^M//'
Хотя что бы они обновились, достаточно просто сказать cvs commit;
Вместо sed можно задействовать перл. egrep, xargs, sed — под виндами я пользовался
цигвином, и вообще с какого-то момента перестал представлять жизнь без GNU тулзов.
Здравствуйте, orangy, Вы писали:
O>Здравствуйте, qwert2002, Вы писали:
Q>>ах ну да, конечно. Только как получить список файлов и каталогов, которые надо добавить или обновить в репозиторий — в этом-то и есть вопрос? Команды CVS я то же знаю :).
Q>>Надеюсь, что решение простое O>Нет решения,
ок спасибо. Но это не устраивает :(
O>Единственный путь, который я вижу на тему автоматизации процесса — это либо использовать плагин к Visual Studio (или другой IDE), либо парсить файлы проекта и выполнять соответствующие команды CVS.
мда. для веб проектов мы используем немного другой тулс. Студия в этом случае как бы это сказать ...
Здравствуйте, dmz, Вы писали:
dmz>Вместо sed можно задействовать перл. egrep, xargs, sed — под виндами я пользовался dmz>цигвином, и вообще с какого-то момента перестал представлять жизнь без GNU тулзов.
супер! то что надо
могли бы вы поделиться своими наработками в этом плане
и вот что надо:
батник, который бы сделал следующее:
— update. If conflict was found then abort operation
— add contents! BUT automatically to detect files type. If conflict was found then abort operation
— commit. If conflict was found then abort operation
— set tag. If conflict was found then abort operation
Здравствуйте, qwert2002, Вы писали:
dmz>>Вместо sed можно задействовать перл. egrep, xargs, sed — под виндами я пользовался dmz>>цигвином, и вообще с какого-то момента перестал представлять жизнь без GNU тулзов.
Q>супер! то что надо
Это стёб?
Q>могли бы вы поделиться своими наработками в этом плане Q>и вот что надо: Q>батник, который бы сделал следующее: Q>- update. If conflict was found then abort operation Q>- add contents! BUT automatically to detect files type. If conflict was found then abort operation Q>- commit. If conflict was found then abort operation Q>- set tag. If conflict was found then abort operation Q>we will use perl, so you can use perl commands Q>many thanks
Ну, это все делается более или менее элементарно. Так что вы уж сами.
У нас в конторе написано некоторое количество оберток над голым cvs.
Могу сказать, что некоторые вещи, которые для cvs надо реализовывать
дополнительно, в svn есть от рождения.
Здравствуйте, dmz, Вы писали:
dmz>Могу сказать, что некоторые вещи, которые для cvs надо реализовывать dmz>дополнительно, в svn есть от рождения.
1) а есть что-то типа TortoiseCVS только что бы работало через браузер. Дело в том что все проекты лежат на одной компьютере, а надо иметь возможность любому из сотрудников со своей машины выложить проект. Но нельзя что бы проект лежал на локаьлной машине.
есть ли такая утилита?
2) что такоe svn?
3) на счет того что дальше мне надо самому. Если бы мог то уже написал бы и не дурил голову. Если можете напишите — если вы в этом дока.
Здравствуйте, SchweinDeBurg, Вы писали:
SDB>Здравствуйте, qwert2002, Вы писали:
Q>>2) что такоe svn?
SDB>Subversion SDB>TortoiseSVN (аналог TortoiseCVS)
спасибо, но только не совсем понятно зачем его использовать вместо CVS. Ну да ладно. К тому я так понял у них только 1 версия вышла — т.е. еще багов будут ловить немерено
Здравствуйте, qwert2002, Вы писали:
Q>спасибо, но только не совсем понятно зачем его использовать вместо CVS.
Многое сделано логичнее/удобнее/лучше, чем в CVS.
Q>К тому я так понял у них только 1 версия вышла — т.е. еще багов будут ловить немерено
Юзаю уже давно — ни одной проблемы. На всякий — плюю через плечо...
[ posted via RSDN@Home 1.1.2 stable, accompanied by Metallica — Cure ]
O>Авторы : O>orangy
O>Аннотация : O>Управление исходными текстами является маленькой частью большой и сложной науки управления созданием программного обеспечения...
подскажите, пожалуйста, есть ли в Cvs команда извлечения одного лишь каталога со всем его содержимым, а не целиком модуля? Сразу скажу что разбивать репозиторий ан модули нельзя, поэтому такой вопрос и возникает.
Здравствуйте, qwert2002, Вы писали:
Q>подскажите, пожалуйста, есть ли в Cvs команда извлечения одного лишь каталога со всем его содержимым, а не целиком модуля? Сразу скажу что разбивать репозиторий ан модули нельзя, поэтому такой вопрос и возникает.
Команда обычная — checkout, просто надо указать путь к каталогу, т.е. /module/dir/subdir и т.п.
Каким образом я из Unix могу получить доступ к репозиторию, находящемуся на сервере Windows используя метод доступа pserver?
Я использую строку для подключения:
cvs -d :pserver:user@10.0.0.10:e:/cvsroot login
на что получаю ошибку:
cvs login: CVSROOT may only specify a positive, non-zero, integer port (not `e:').
cvs login: Perhaps you entered a relative pathname?
cvs [login aborted]: Bad CVSROOT: ...
Здравствуйте, orangy, Вы писали:
OE>>б) примерчик с каталогом в котором пара текстовых файлах расписан доходчиво а как правильно добавлять в CVS каталог с проектом, где надо контролировать не все файлы, например без тех же бинарников? O>Можно делать по разному, например по маске, но опыт показывает, что удобнее подготовить отдельную копию проекта, в котором будут только файлы, подлежащие контролю версий, а затем импортировать поддерево целиком.
ИМХО, удобнее не создавать отдельно ветку, а заполнить файлик .cvsignore
Здравствуйте, <Аноним>, Вы писали:
А>Как корректно указать "windows" путь?
Использовать пути относительно корня репозитория, см.настройки cvsnt сервиса.
SS>>Полагаю, надо сохранить у себя исправленную, check-out SS>>последнюю, заменить на исправленную и сделать check-in.
OE>да, меня orangy уже по аське проконсультировал, только так и получилось
Тоже самое и с меткой:
cvs commit: sticky tag `tag_2006-11-04' for file `run.java' is not a branch
Ну правильно, потому что коммит изменений над файлами, полученными по меткам — предполагает изменение соответствующих(старых) версий каждого файла, к которым относится данная метка.
А если эти изменения будут сделаны, то изменения последующих(более новых) редакций — окажутся недействительными, т.е. по всей цепочке изменений мы не сможем уже восстаровить последнюю версию файла, начиная с первоначальной, цепочка изменений — нарушится.
Выходом из этого могло бы быть — автоматический апдейт изменений той редакции, которая следует за помеченной, с целью добавления туда еще и тех изменений, которые мы сделали непосредственно изменив файл, полученный по этой метке. Но это ж гемморно, и приводит к конфликтам, поэтому думаю в этом случае cvs пришлось сделать такой категоричной
Поэтому, получается, что единственное рациональное использование меток — это всего лишь анализ помеченной группы файлов, но не их модификация(хотя это и возможно через copy-checkout-paste, но это скорее обходной путь)