import--Import sources into CVS, using vendor branches

Use import to incorporate an entire source distribution from an outside source (e.g., a source vendor) into your source repository directory. You can use this command both for initial creation of a repository, and for wholesale updates to the module from the outside source. Chapter 14, Tracking third-party sources, for a discussion on this subject.

The repository argument gives a directory name (or a path to a directory) under the cvsnt root directory for repositories; if the directory did not exist, import creates it.

When you use import for updates to source that has been modified in your source repository (since a prior import), it will notify you of any files that conflict in the two branches of development; use checkout -j to reconcile the differences, as import instructs you to do.

If cvsnt decides a file should be ignored (the section called “Ignoring files via cvsignore”), it does not import it and prints I followed by the filename (the section called “import output”, for a complete description of the output).

If the file $CVSROOT/CVSROOT/cvswrappers exists, any file whose names match the specifications in that file will be treated as packages and the appropriate filtering will be performed on the file/directory before being imported. the section called “The cvswrappers file”.

The outside source is saved in a first-level branch, by default 1.1.1. Updates are leaves of this branch; for example, files from the first imported collection of source will be revision 1.1.1.1, then files from the first imported update will be revision 1.1.1.2, and so on.

At least one argument is required. repository is needed to identify the collection of source. Normally also two other arguments are supplied - vendortag is a tag for the entire branch (e.g., for 1.1.1). You must also specify at least one releasetag to identify the files at the leaves created each time you execute import.

Note that by default import does not change the directory in which you invoke it. In particular, it does not set up that directory as a cvsnt working directory. For initial imports the -C option will achieve this, but for vendor source imports you need to import them first and then check them out into a different directory (the section called “Getting the source”).

import options

This standard option is supported by import (the section called “Common command options”, for a complete description):

-m message

Use message as log information, instead of invoking an editor.

There are the following additional special options.

-b branch

See the section called “Multiple vendor branches”.

-k subst

Indicate the keyword expansion mode desired. This setting will apply to all files created during the import, but not to any files that previously existed in the repository. See the section called “Substitution modes”, for a list of valid -k settings.

-I name

Specify file names that should be ignored during import. You can use this option repeatedly. To avoid ignoring any files at all (even those ignored by default), specify `-I !'.

name can be a file name pattern of the same type that you can specify in the .cvsignore file. the section called “Ignoring files via cvsignore”.

If you specify '-I @' the contents of .cvsigore files are ignored for the import.

-W spec

Specify file names that should be filtered during import. You can use this option repeatedly. To override all the default wrappers specify '-W !'.

spec can be a file name pattern of the same type that you can specify in the .cvswrappers file. the section called “The cvswrappers file”.

-C

Create CVS directories during initial import. This provides simplified setup of a sandbox, however as it does not contact the server is not suitable for vendor updates - for this a proper import/checkout sequence should be used.

-d

Use the modification time of the file as the import time instead of the current time.

-f

Overwrite any duplicate release tags within imported files.

-n

Do not require vendor or release tags. This is used for initial imports only, and creates a repository without a vendor branch. If you are not planning to use vendor source imports then using this option simplifies the import process.

import output

import keeps you informed of its progress by printing a line for each file, preceded by one character indicating the status of the file:

U file

The file already exists in the repository and has not been locally modified; a new revision has been created (if necessary).

N file

The file is a new file which has been added to the repository.

C file

The file already exists in the repository but has been locally modified; you will have to merge the changes.

I file

The file is being ignored (the section called “Ignoring files via cvsignore”).

L file

The file is a symbolic link; cvs import ignores symbolic links. People periodically suggest that this behavior should be changed, but if there is a consensus on what it should be changed to, it doesn't seem to be apparent. (Various options in the modules file can be used to recreate symbolic links on checkout, update, etc.; the section called “The modules file”.)

import examples

See Chapter 14, Tracking third-party sources, and the section called “Creating a directory tree from a number of files”.