1 This file collects information about how the various VCSs deal with
2 keyword expansion, EOL handling, and file permissions.
8 There are several keyword expansion modes that can be set on files.
9 These options also affect whether EOLs are all converted to/from the
10 local convention. The following keywords are recognized: Author,
11 CVSHeader (CVS only), Date, Header, Id, Locker, Name, RCSfile,
12 Revision, Source, State, and Log. ("Log" is a special case because
13 its expansion is irreversible.) Keyword names are case sensitive.
14 There is also a provision to define "Local keywords", which use a
15 user-defined name but expand as one of the standard keywords.
17 These modes are selected via a "-k" command-line option, so for
18 example the "kv" option is selected using the option "-kkv".
20 The available modes are:
22 * kv, kvl: Expand keywords, or expand them including locker name.
23 Also munge line endings.
25 * k: Collapse keywords (e.g. "$Revision: 1.2 $ -> "$Revision$"), except
26 for the $Log$ option, which is expanded. Also munge line endings.
28 * o: Leave keywords (including the $Log$ keyword) in the form that
29 they were checked in. Also munge line endings.
31 * v: Generate only keyword values instead of the full keyword string;
32 e.g., "$Revision$" -> "5.7". (This is mostly useful for export.)
33 Also munge line endings.
35 * b: Leave keywords in the form that they were checked in, inhibit
36 munging of line endings between canonical LF to the local
37 convention, and prevent merging of file differences.
39 Whether or not a file is executable is determined from the executable
40 bit of the corresponding RCS file in the repository.
42 Please note that CVSNT handles file modes differently: it supports
43 additional modes, and it allows the file mode to differ from one file
44 revision to another. This is the main reason that cvs2svn doesn't
45 work reliably with CVSNT repositories.
51 * svn:executable: If this property is set, the file is marked as
52 executable upon checkout.
54 * svn:mime-type: Used to decide whether line-based merging is safe,
55 whether to show diff-based deltas between revisions, etc.
57 * svn:keywords: List the keywords that will be expanded in the file.
59 * svn:eol-style: Specifies how to manipulate EOL characters. If this
60 property is set, then the file can be committed to Subversion using
61 somewhat more flexible EOL conventions. In the Subversion
62 repository the text is normalized to a particular EOL style,
63 probably the "svnadmin dump" style listed below. On checkout or
64 export, the LFs will be converted to the specified EOL style.
69 On commit: text can contain any mixture of EOL styles.
71 svnadmin dump: file text contains the specified EOL format.
73 svnadmin load: should presumably be consistent with the "svnadmin
78 On commit: text can use any EOL style, but lines must be
81 svnadmin dump: file text contains the canonical LF format.
83 svnadmin load: should presumably be consistent with the "svnadmin
90 * The executable status of a file is determined by a file mode
91 attribute in the fast-import file.
93 * Keywords: Not obvious what to do. There is support for expanding an
94 $Id$ keyword via the gitattributes mechanism. Others could only be
95 supported via custom-written filters.
97 * EOL style: Normally, git does not do any line-end conversion.
98 However, there is a way to use gitattributes to mark particular
99 files as text files, and to use the configuration settings of
100 core.autocrlf and core.safecrlf to affect conversions between LF and
103 * The "diff" gitattribute can be used to tell how to generate diffs
104 for a file (otherwise a heuristic is used). This attribute can be
105 used to force a file to be treated as text/binary, or tell what
106 "diff driver" to use.