go to the first, previous, next, last section, table of contents.
слежение за чужими исходными текстамиесли вы изменяете программу, чтобы она лучше соответствовала вашим нуждам, то вам, вероятно, захочется еще раз сделать те же самые изменения, когда появляется новая версия программы. cvs поможет вам с этой задачей. в терминологии, используемой в cvs, лицо или организация, предоставившая вам текст программы, называется поставщиком. неизмененное дерево каталогов из комплекта поставки помещается на отдельную ветку, которая называется ветка производителя. cvs резервирует для этой цели ветку с номером `1.1.1'. когда вы изменяете исходный текст и фиксируете изменения, то они оказываются в основном стволе. когда поставщик выпускает новую версию программы, вы помещаете её на ветку производителя и копируете изменения в основной ствол.
используйте команду начальный импорт
используйте команду
заметьте, что
предположим, что у вас имеются исходные тексты программы, которая
называется $ cd wdiff-0.04 $ cvs import -m "import of fsf v. 0.04" fsf/wdiff fsf_dist wdiff_0_04 в вышеприведенном примере метка поставщика называется `fsf_dist', а единственная присвоенная метка релиза --- `wdiff_0_04'. обновление с помощью импорта
когда появляется новая версия исходных текстов, вы импортируете
их в репозиторий с помощью такой же команды $ tar xfz wdiff-0.05.tar.gz $ cd wdiff-0.05 $ cvs import -m "import of fsf v. 0.05" fsf/wdiff fsf_dist wdiff_0_05
для файлов, которые не были локально изменены, новые созданные
ревизии становятся головными ревизиями. если же локальные
изменения были сделаны, команда $ cvs checkout -jfsf_dist:yesterday -jfsf_dist wdiff вышеуказанная команда извлечет последнюю версию `wdiff', объединяя в рабочую копию изменения, сделанные на ветке поставщика `fsf_dist' со вчерашнего дня. если в процессе слияния появляются конфликты, то их нужно разрешить обычным способом (see section пример конфликта), затем измененные файлы можно зафиксировать. использование даты, как предлагается выше, предполагает, что вы импортируете не более одной версии продукта в день. если же это не так, вы всегда можете использовать что-нибудь типа такого: $ cvs checkout -jwdiff_0_04 -jwdiff_0_05 wdiff в этом случае вышеприведенные команды эквивалентны. возврат к последней версии от поставщикавы также можете полностью отменить локальные изменения и вернуться к последней версии от поставщика, установив головную ревизию в ветку поставщика для всех файлов. например, если у вас есть извлеченная копия исходников в `~/work.d/wdiff', и вы хотите вернуть все файлы в этом каталоге в то состояние, в котором вам предоставил их поставщик, наберите: $ cd ~/work.d/wdiff $ cvs admin -bwdiff . вы должны написать `-bwdiff' без пробела после `-b'. see section ключи команды admin. как обрабатывать двоичные файлы при импорте в cvsиспользуйте ключ `-k', чтобы сказать команде `import', что файлы являются двоичными. see section файл `cvswrappers'. как обрабатывать замену ключевых слов при импорте в cvsисходные тексты, которые вы импортируете, могут содержать ключевые слова (see section подстановка ключевых слов). например, поставщик мог использовать cvs или какую-нибудь другую систему, которая использует похожий синтаксис подстановки ключевых слов. если вы просто импортируете файлы, то содержимое ключевых слов будет заменены вашим cvs. вероятно, более удобно будет оставить ключевые слова в том виде, в котором они были у вашего поставщика, чтобы сохранить информацию об исходных текстах.
чтобы сохранить содержимое ключевых слов, добавьте к команде
несколько веток поставщикавсе примеры до этого момента подразумевали, что есть только один поставщик, от которого вы получаете исходные тексты. в некоторых ситуациях вы можете получать эти тексты из разных мест. например, предположим, что вы работаете в проекте, в котором много различных людей и команд изменяют исходный код продукта. существуют различные способы работы в такой ситуации, но иногда у вас есть несколько деревьев исходников, лежащих рядом, и всё, что вы хотите сделать -- это положить их под cvs, чтобы они по крайней мере находились в одном месте.
для обработки ситуаций, в которых поставщиков больше одного, вы
можете задать команде например, предположим, что есть две команды: красная и синяя, и обе посылают вам исходные тексты. вы хотите импортировать результаты работы красной команды в ветку `1.1.1' и использовать метку поставщика `red'. вы также хотите импортировать работу синей команды на ветку `1.1.3' и использовать метку поставщика `blue'. в этом случае можно использовать такие команды: $ cvs import dir red red_1-0 $ cvs import -b 1.1.3 dir blue blue_1-5 заметьте, что если метка поставщика не соответствует ключу `-b', то cvs не обратит на это внимания! например, $ cvs import -b 1.1.3 dir red red_1-0 будьте осторожны; такие ошибки совершенно точно приведут, в лучшем случае, к недоразумениям. не могу придумать полезной цели для возможности намеренного несовпадения в этом месте, а если вы придумаете такой способ, то не используйте его. скорее всего, в следующих версиях cvs это станет ошибкой. go to the first, previous, next, last section, table of contents. |