RESOLVE(1)

NAME
resolve - merge files in conflict using interactive commands and/or Filemerge

SYNOPSIS
resolve [ -f ] [ -n ] [ -w ws ]

DESCRIPTION
The resolve program assists the user in resolving files that are in conflict in a TeamWare workspace. TeamWare was formerly known as CodeManager. The bringover command creates a conflict if the file changed in both the parent and child workspaces. It puts an entry into a workspace's Codemgr_wsdata/conflicts file in the child workspace. It also puts information into the SCCS file about the parent, child, ancestor versions of the file.

The resolve program can be run in a variety of modes. The default mode is to prompt the user for commands and automatically advance to the next file after resolving the current file. Commands are listed below in USAGE. To override any defaults, see ~/.codemgr_resrc under the FILE section below.

If the user changes the default to automatically start twmerge, formerly known as FileMerge, resolve automatically processes the list of files in conflict, invoking (via the ToolTalk service) twmerge for each file. twmerge is an OpenLook three-way differences program that assists the user in merging the changes. The ToolTalk service message sent to twmerge includes the names of the parent, ancestor, and child files. When the user chooses the Save button in twmerge, it sends a ToolTalk service message back to resolve; resolve checks out the file from SCCS , copies the merged version, and checks the file back in. The user may be prompted for comments during checkin. The file name is removed from the conflicts file and the information about the parent, child, and ancestor versions of the file are removed from the SCCS file.

OPTIONS

-f  Automatically start twmerge instead of prompting the user at the command line.

-n  List the files in conflict.

-w ws
    Specifies the workspace in which to resolve files. If the -w option is not specified, the value of the shell environment variable CODEMGR_WS is used. If CODEMGR_WS is not set and the current directory is contained within a workspace, the containing workspace is used.

USAGE

  Commands

At the program's command prompt ("filename: "), users can specify a number of possible commands. The entire command name need not be entered, only enough of the command name to distinguish it from the other commands is required. For instance, since "accept" is the only command that begins with "a", that is all that must be entered. However, two commands exist that begin with "m", so the first two letters of those commands must be entered.

Note:
    The following abbreviations are used in the section below: a = ancestor, c = child, p = parent, m = merged result.

accept c| p
    Accept the child or parent version of the file. Remove the file's name from the conflict file (Codemgr_wsdata/conflicts).

commit [filename]
    Commit the merged file. This command checks out the file. If a filename is specified, it copies that file to the checked out file name; otherwise it copies over the version of the file generated by the merge subcommand. It then checks the file in. It may prompt for checkin comments if that property is set in the user's .codemgr_resrc file. The file's name is removed from the conflict file (Codemgr_wsdata/conflicts).

diff [options] a | c | p | m   a | c | p | m
    Show the differences between two files. Any combination of ancestor, child, parent, or merged may be specified. The diff(1) program is used to determine the differences. If the environment variable DIFF is set, it names the diff program to execute. options are the options for the diff(1) program or the program named in the DIFF environment variable. By default, its output is piped into more(1). If the environment variable PAGER is set, it names the program to receive diff's output.

edit a | c | p | m
    Load the file into an editor. If the environment variable EDITOR is set, it specifies the editor to use, otherwise, vi(1) is used. Only the merged file can actually be edited. The other versions can be viewed but not edited because they have read-only permissions.

twmerge
    Execute the window-based twmerge tool. Must be executed on a window-based system.

help
    Display help messages.

history c | p
    Print the SCCS history for changes made to the file in the child or to the file in the parent.

list
    List all the files still in conflict.

merge
    Merge the child file with the parent. The result is placed in a temporary file. This temporary file becomes the version of the file referred to as "m" by the other commands. The merge command attempts to automerge as much as possible. If it cannot automerge the entire file, it will display the number of changes it could not automerge. Users must use the edit m command to hand merge the rest of the file. The changes that could not be automerged are marked with ">>>>>>>>". You can search for this marker in the file to locate the unresolved conflicts. Once you have a version you are satisfied with, use the commit command to commit the file.

more a | c | p | m
    Use the more command to display the contents of the ancestor, child, parent, or merged file. If the environment variable PAGER is set, it specifies the program used to show the contents. Otherwise, more(1) is used.

skip [number]
    Skip to the next file. If number is specified, skip to the file with that number. Use the list command to view the files in numbered order.

sh [command]
    Invoke a shell. If command is specified, execute the command. If the environment variable SHELL is set, it names the shell that will be used. Otherwise, /bin/sh(1) is used.

! [command]
    Invoke a shell. If command is specified, execute the command. If the environment variable SHELL is set, it names the shell that will be used. Otherwise, /bin/sh(1) is used.

quit
    Quit this command.

ENVIRONMENT
The following variables are used by resolve.

CODEMGR_PATH_ONLY
    TeamWare commands first search for other TeamWare binaries relative to where their own binary is located in the file system, they then search in the directories specified in the PATH environment variable. Setting this variable causes TeamWare commands to search for other TeamWare binaries only in PATH.

CODEMGR_WS
    Contains the name of a user's default workspace. The workspace specified by CODEMGR_WS is automatically used if -w option is not specified to a command.

DIFF
    Contains the name of the command used by the diff subcommand. Defaults to diff -w.

EDITOR
    Contains the name of the editor resolve activates to edit files. Defaults to vi.

PAGER
    Contains the name of the page viewer program to which resolve pipes diff output. Defaults to more.

SHELL
    Contains the name of the shell that resolve activates when the sh subcommand is executed. Defaults to /bin/sh.

The following variables are set by resolve.

CODEMGR_RS_ANCEST
    Contains the name of the version of the ancestor file, if one exists.

CODEMGR_RS_CHILD
    Contains the name of the version of the child file with keywords expanded.

CODEMGR_RS_MERGED
    Contains the name of the merged version of the file.

CODEMGR_RS_PARENT
    Contains the name of the version of the parent file.

FILES

~/.codemgr_resrc
    This file allows the user to change five default properties:

    start_filemerge

    If start_filemerge is set, then twmerge is automatically started when resolve begins execution. By default this is not set. To change the default, add the line "set start_filemerge" to the file.

    autoadvance

    If autoadvance is set, and twmerge is running, it is automatically loaded with each successive file. This is the default setting. To turn it off, add the line "set noautoadvance" to the file.

    skipcomments

    A default comment is automatically supplied during checkin after the user resolves the file. To be prompted to include an additional comment, add the line "set noskipcomments".

    reuse_filemerge

    If a twmerge process is already in use prior to executing resolve, the resolve program will not reuse that process. If you want the resolve program to reuse an already running FileMerge process, add the line "set reuse_filemerge".

    autosave

    If this property is set, and all the changes in the file can be "automerged," the file will also be automatically saved and checked in; the user need not choose the FileMerge Save button. This in not the default behavior. To set this property add the line "set autosave".

ws/Codemgr_wsdata/conflicts
    List of files in conflict

SEE ALSO
TeamWare User's Guide

bringover(1), def.dir.flp(1), putback(1), twmerge(1), ws_undo(1), workspace(1), access_control(4), args(4), children(4), conflicts(4), history(4), locks(4), nametable(4), notification(4), parent(4)

NOTES

If you want to hand-merge a file, merge it into a temporary file name. Then run the "commit filename" subcommand, specifying the temporary file name as filename.