The "changes" command:
Report the change status of files in the current check-out. If one or more PATHS are specified, only changes among the named files and directories are reported. Directories are searched recursively.
The status command is similar to the changes command, except it lacks several of the options supported by changes and it has its own header and footer information. The header information is a subset of that shown by the info command, and the footer shows if there are any forks. Change type classification is always enabled for the status command.
Each line of output is the name of a changed file, with paths shown according to the "relative-paths" setting, unless overridden by the --abs-paths or --rel-paths options.
By default, all changed files are selected for display. This behavior can be overridden by using one or more filter options (listed below), in which case only files with the specified change type(s) are shown. As a special case, the --no-merge option does not inhibit this default. This default shows exactly the set of changes that would be checked- in by the commit command.
If no filter options are used, or if the --merge option is used, the artifact hash of each merge contributor check-in version is displayed at the end of the report. The --no-merge option is useful to display the default set of changed files without the merge contributors.
If change type classification is enabled, each output line starts with a code describing the file's change type, e.g. EDITED or RENAMED. It is enabled by default unless exactly one change type is selected. For the purposes of determining the default, --changed counts as selecting one change type. The default can be overridden by the --classify or --no-classify options.
--edited and --updated produce disjoint sets. --updated shows a file only when it is identical to that of its merge contributor, and the change type classification is UPDATED_BY_MERGE or UPDATED_BY_INTEGRATE. If the file had to be merged with any other changes, it is considered to be merged or conflicted and therefore will be shown by --edited, not --updated, with types EDITED or CONFLICT. The --changed option can be used to display the union of --edited and --updated.
--differ is so named because it lists all the differences between the checked-out version and the check-out directory. In addition to the default changes (excluding --merge), it lists extra files which (if ignore-glob is set correctly) may be worth adding. Prior to doing a commit, it is good practice to check --differ to see not only which changes would be committed but also if any files should be added.
If both --merge and --no-merge are used, --no-merge has priority. The same is true of --classify and --no-classify.
The "fossil changes --extra" command is equivalent to "fossil extras".
- Display absolute pathnames
- Display pathnames relative to the current working directory
- Verify file status using hashing rather than relying on file mtimes
- --case-sensitive BOOL
- Override case-sensitive setting
- Include unmanaged files beginning with a dot
- --ignore <CSG>
- Ignore unmanaged files matching CSG glob patterns
Options specific to the changes command:
- Identify the repository if report is non-empty
- Say "(none)" if the change report is empty
- Start each line with the file's change type
- Do not print file change types
- Display edited, merged, and conflicted files
- Display files updated by merge/integrate
- Combination of the above two options
- Display missing files
- Display added files
- Display deleted files
- Display renamed files
- Display files having merge conflicts
- Display files with metadata changes
- Display unchanged files
- Display all managed files, i.e. all of the above
- Display unmanaged files
- Display modified and extra files
- Display merge contributors
- Do not display merge contributors