creator-vcs.qdoc 25.9 KB
Newer Older
1 2
/****************************************************************************
**
3
** Copyright (c) 2013 Digia Plc and/or its subsidiary(-ies).
hjk's avatar
hjk committed
4
** Contact: http://www.qt-project.org/legal
5
**
hjk's avatar
hjk committed
6
** This file is part of Qt Creator
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
**
**
** GNU Free Documentation License
**
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of this
** file.
**
**
****************************************************************************/

// **********************************************************************
// NOTE: the sections are not ordered by their logical order to avoid
// reshuffling the file each time the index order changes (i.e., often).
// Run the fixnavi.pl script to adjust the links to the index order.
// **********************************************************************

/*!
    \contentspage index.html
27
    \previouspage creator-project-wizards.html
28
    \page creator-version-control.html
29
    \nextpage creator-configuring-projects.html
30 31 32 33 34 35

    \title Using Version Control Systems

    Version control systems supported by \QC are:
    \table
        \header
36 37 38
            \li  Version Control System
            \li  Address
            \li  Notes
39
        \row
40 41 42
            \li Bazaar
            \li \l{http://bazaar.canonical.com/}
            \li \QC 2.2 and later
43
        \row
44 45
            \li ClearCase
            \li \l{http://www-01.ibm.com/software/awdtools/clearcase/}
46
            \li  \QC 2.6 and later
47
        \row
48 49 50
            \li CVS
            \li \l{http://www.cvshome.org}
            \li
51
        \row
52 53
            \li Git
            \li \l{http://git-scm.com/}
54
            \li Git version 1.7.2, or later
55
        \row
56 57 58
            \li Mercurial
            \li \l{http://mercurial.selenic.com/}
            \li \QC 2.0 and later
59
        \row
60 61 62
            \li Perforce
            \li \l{http://www.perforce.com}
            \li Server version 2006.1 and later
63
        \row
64 65
            \li Subversion
            \li \l{http://subversion.apache.org/}
66
            \li Subversion version 1.6.17 and later
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
    \endtable

    \section1 Setting Up Version Control Systems

    \QC uses the version control system's command line clients to access your
    repositories. To allow access, make sure that the command line clients can
    be located using the \c{PATH} environment variable or specify the path to
    the command line client executables in \gui{Tools} > \gui{Options} >
    \gui {Version Control}.

    After you set up the version control system, use the command line to check
    that everything works (for example, use the status command). If no issues
    arise, you should be ready to use the system also from \QC.

    \section2 Using msysGit on Windows

    If you configure Git for use with \c {git bash}, only, and use SSH
    authorization, Git looks for the SSH keys in the directory where the
    \c HOME environment points to. The variable is always set by \c {git bash}.

    However, the variable is typically not set in a Windows command prompt. When
    you run Git from a Windows command prompt, it looks for the SSH keys in its
    installation directory, and therefore, the authorization fails.

    You can set the \c HOME environment variable from \QC. Select \gui {Tools >
    Options > Version Control > Git}. Select the \gui {Environment Variables}
    and the \gui {Set "HOME" environment variable} check boxes. \c HOME is set
    to \c %HOMEDRIVE%%HOMEPATH% when the Git executable is run and authorization
    works as it would with \c {git bash}.

    \section1 Setting Up Common Options

    Select \gui{Tools} > \gui{Options} > \gui{Version Control} > \gui{Common}
    to specify settings for submit messages:

    \list

104
        \li \gui{Submit message check script} is a script or program that
105 106 107 108 109
            can be used to perform checks on the submit message before
            submitting. The submit message is passed in as the script's first
            parameter. If there is an error, the script should output a
            message on standard error and return a non-zero exit code.

110
        \li \gui{User/alias configuration file} takes a file in mailmap format
111 112 113 114 115 116 117 118 119 120 121 122 123
            that lists user names and aliases. For example:

            \code
            Jon Doe <Jon.Doe@company.com>
            Hans Mustermann <Hans.Mustermann@company.com> hm <info@company.com>
            \endcode

            \note The second line above specifies the alias \e{hm} and the
            corresponding email address for \e{Hans Mustermann}. If the
            user/alias configuration file is present, the submit editor
            displays a context menu with \gui{Insert name} that pops up a
            dialog letting the user select a name.

124
        \li \gui{User fields configuration file} is a simple text file
125 126 127 128 129 130 131 132 133 134 135 136 137
            consisting of lines specifying submit message fields that take
            user names, for example:

            \code
            Reviewed-by:
            Signed-off-by:
            \endcode

            The fields above appear below the submit message. They provide
            completion for the aliases/public user names specified in the
            \e{User/alias configuration file} as well as a button that opens the
            aforementioned user name dialog.

138
        \li \gui{SSH prompt command} specifies an ssh-askpass command that you
139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193
            can use (on Linux) to prompt the user for a password when using SSH.
            For example, \c ssh-askpass or \c x11-ssh-askpass, depending on the
            ssh-askpass implementation that you use.

    \endlist

    \section1 Creating VCS Repositories for New Projects

    \QC allows you to create repositories for version control systems that
    support local repository creation, such as Git, Mercurial, or Bazaar.
    When creating a new project by selecting \gui File > \gui{New File or
    Project}, you can choose a version control system on the final wizard page.

    You can also select \gui Tools and then select \gui {Create Repository}
    in the submenu for the version control system.

    To import a project that is under version control, choose \gui {File >
    New File or Project > Project from Version Control} and select the
    version control system that you use. Follow the instructions of the
    wizard to import the project.

    \section1 Using Version Control Systems

    The \gui{Tools} menu contains a submenu for each supported version
    control system.

    The \gui{Version Control} output pane displays the commands that are
    executed, a timestamp, and the relevant output. Select \gui {Window > Output
    Panes > Version Control} to open the pane.

    \image qtcreator-vcs-pane.png

    \section2 Adding Files

    When you create a new file or a new project, the wizard displays a page
    asking whether the files should be added to a version control system.
    This happens when the parent directory or the project is already
    under version control and the system supports the concept of adding files,
    for example, Perforce and Subversion. Alternatively, you can
    add files later by using the version control tool menus.

    With Git, there is no concept of adding files. Instead, all modified
    files must be staged for a commit.

    \section2 Viewing Diff Output

    All version control systems provide menu options to \e{diff} the current
    file or project: to compare it with the latest version stored in the
    repository and to display the differences. In \QC, a diff is displayed in a
    read-only editor. If the file is accessible, you can double-click on a
    selected diff chunk and \QC opens an editor displaying the file, scrolled to
    the line in question.

    \image qtcreator-vcs-diff.png

194 195 196 197 198
    With Git, the diff is displayed side-by-side in a \l{Comparing Files}
    {diff editor} by default. To use the old diff view instead, select
    \gui Tools > \gui Options > \gui {Version Control} > \gui Git, and deselect
    the \gui {Show diff side-by-side} option.

199 200 201 202 203 204 205 206
    \section2 Viewing Versioning History and Change Details

    Display the versioning history of a file by selecting \gui{Log}
    or \gui{Filelog}. Typically, the log output contains the date, the commit
    message, and a change or revision identifier. Click on the identifier to
    display a description of the change including the diff.
    Right-clicking on an identifier brings up a context menu that lets you
    show annotation views of previous versions (see \l{Annotating Files}).
207
    With Git you can also choose to cherry-pick or revert a change.
208 209 210 211 212 213 214 215 216 217 218 219 220 221

    \image qtcreator-vcs-log.png

    \section2 Annotating Files

    Annotation views are obtained by selecting \gui{Annotate} or \gui{Blame}.
    Selecting \gui{Annotate} or \gui{Blame} displays the lines of the file
    prepended by the change identifier they originate from. Clicking on the
    change identifier shows a detailed description of the change.

    To show the annotation of a previous version, right-click on the
    version identifier at the beginning of a line and choose one of the
    revisions shown at the bottom of the context menu. This allows you to
    navigate through the history of the file and obtain previous versions of
Leena Miettinen's avatar
Leena Miettinen committed
222
    it. It also works for Git and Mercurial using SHA-1.
223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256

    The same context menu is available when right-clicking on a version
    identifier in the file log view of a single file.

    \section2 Committing Changes

    Once you have finished making changes, submit them to the version control
    system by choosing \gui{Commit} or \gui{Submit}. \QC displays a
    commit page containing a text editor where you can enter your commit
    message and a checkable list of modified files to be included.

    \image qtcreator-vcs-commit.png

    When you have finished filling out the commit page information, click on
    \gui{Commit} to start committing.

    The \gui{Diff Selected Files} button brings up a diff view of the
    files selected in the file list. Since the commit page is just another
    editor, you can go back to it by closing the diff view. You can also check
    a diff view from the editor combo box showing the \gui{Opened files}.

    \section2 Reverting Changes

    All supported version control system support reverting your project to
    known states. This functionality is generally called \e reverting.

    The changes discarded depend on the version control system.

    A version control system can replace the \gui Revert menu option with other
    options.

    \section3 Reverting Changes Using Git

    The Git version control system has an index that is used to stage
Sergio Ahumada's avatar
Sergio Ahumada committed
257
    changes. The index is committed on the next commit. Git allows you to revert
258 259 260 261 262
    back to the state of the last commit as well as to the state staged in the
    index.

    \list

Leena Miettinen's avatar
Leena Miettinen committed
263
        \li \gui Git > \gui {Current File} > \gui{Undo Unstaged Changes} reverts
Leena Miettinen's avatar
Leena Miettinen committed
264
            all changes and resets the current file to the state of the
Leena Miettinen's avatar
Leena Miettinen committed
265
            index.
266

Leena Miettinen's avatar
Leena Miettinen committed
267 268
        \li \gui Git > \gui {Current File} > \gui {Undo Uncommitted Changes}
            reverts all changes, discarding the
Leena Miettinen's avatar
Leena Miettinen committed
269
            index. This returns the current file to the state it was in right
270 271
            after the last commit.

Leena Miettinen's avatar
Leena Miettinen committed
272 273 274
        \li \gui Git > \gui {Local Repository} > \gui Reset opens a dialog
            where you can select the SHA-1 to reset the working directory to.
            This is useful after applying patches for review, for example. You
275 276 277 278 279
            can choose between a \gui Soft reset that does not touch the index
            file nor the working tree at all, a \gui Hard reset that discards
            all changes to tracked files in working tree, and a \gui Mixed
            reset that resets HEAD and the index (nothing remains staged)
            without touching the working directory.
Leena Miettinen's avatar
Leena Miettinen committed
280

281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307
    \endlist

    \section2 Viewing Status

    You can select \gui{Status} to view the status of the project or
    repository.

    \section2 Updating the Working Tree

    You can select \gui Update to update your working tree with the latest
    changes from the branch. Some version control systems allow you to choose
    between updating the current project and updating all projects.

    With Git, you stash your changes and then pull the changes from the
    repository.

    \section2 Deleting Files

    You can select \gui Delete to delete obsolete files from the repository.

    With Git, you delete the files from the working tree and then stage the
    deleted files for a commit.

    \section2 Using Additional Bazaar Functions

    Bazaar is a free version control system sponsored by Canonical.

308 309 310 311
    In addition to the standard version control system functions, you can
    select \gui Tools > \gui Bazaar > \gui Pull to turn the branch into a
    mirror of another branch. To update a mirror of the branch, select
    \gui Push.
312

313 314 315 316
    \section2 Using Additional ClearCase Functions

    IBM Rational ClearCase is a version control, workspace management, parallel
    development support, and build automation solution developed by IBM. The
317 318
    ClearCase client plugin is available on Linux and Windows for accessing a
    ClearCase server.
319 320 321 322 323

    The \gui ClearCase submenu contains the following additional items:

    \table
        \header
324 325
            \li Menu Item
            \li Description
326
        \row
327 328
            \li \gui{Check In}
            \li Create a permanent new version of the current file or all files
329 330
                in the versioned object base (VOB).
        \row
331 332
            \li \gui{Check In Activity}
            \li Check in checked-out versions in the change set of the current
333 334
                Unified Change Management (UCM) activity.
        \row
335 336
            \li \gui{Check Out}
            \li Create a writable copy of a branch. If you check out files in a
337 338
                UCM view, they are added to the change set of the UCM activity.
        \row
339 340
            \li \gui{Undo Check Out}
            \li Cancel the checkout for a file and delete the checked-out
341 342
                version.
        \row
343 344
            \li \gui{Undo Hijack}
            \li Resolve hijacked files. If you change the read-only attribute of
345 346 347 348 349
                a file that is loaded into a snapshot view and modify the file
                without checking it out, you \e hijack the file.
    \endtable

\section2 Using Additional CVS Functions
350 351 352

    CVS is an open source version control system.

353 354 355
    In addition to the standard version control system functions, you can
    select \gui Tools > \gui CVS > \gui Edit to open a file for editing.
    To discard the changes that you made in a file, select \gui Unedit.
356 357 358 359 360 361

    \section2 Using Additional Git Functions

    Git is a fast decentralized version control system. Git is available
    for Windows, Linux and Mac.

Leena Miettinen's avatar
Leena Miettinen committed
362 363 364 365
    You can use the \l{http://code.google.com/p/gerrit/}{Gerrit} code review
    tool for projects that use Git. You can apply and check out changes from
    Gerrit in \QC 2.6 and later.

Leena Miettinen's avatar
Leena Miettinen committed
366
    \section3 Working with the Current File
367

Leena Miettinen's avatar
Leena Miettinen committed
368 369 370
    In addition to the standard version control system functions, you can
    select \gui Tools > \gui Git > \gui {Current File} > \gui {Stage File for
    Commit} to mark a new or modified file for committing to the repository.
371

Leena Miettinen's avatar
Leena Miettinen committed
372
    To undo this function, select \gui {Unstage File from Commit}.
373

Leena Miettinen's avatar
Leena Miettinen committed
374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391
    \section3 Working with the Current Project

    In addition to the standard version control system functions, you can
    select \gui Tools > \gui Git > \gui {Current Project} > \gui {Clean Project}
    to clean the working directory. All files that are not under version control
    are displayed in the \gui {Clean Repository} dialog. Ignored files are
    deselected by default. Select the files to delete and click \gui Delete.

    \section3 Working with Local Repositories

    In addition to the standard version control system functions, you can
    select \gui Tools > \gui Git > \gui {Local Repository} > \gui Clean to clean
    the repository.

    To apply latest changes to the last commit, select \gui Tools > \gui Git >
    \gui {Local Repository} > \gui {Amend Last Commit}. You can also edit the
    commit message.

Leena Miettinen's avatar
Leena Miettinen committed
392 393 394 395 396 397 398 399 400 401
    To amend an earlier comment in a series of related commits, select
    \gui Tools > \gui Git > \gui {Local Repository} >
    \gui {Fixup Previous Commit}. This operation is done using interactive
    rebase. In case of conflicts, a merge tool is suggested.

    To change a series of commits in the local repository, select \gui Tools >
    \gui Git > \gui {Local Repository} > \gui {Interactive Rebase}. You can
    reorder or discard commits, squash them into a single commit, or edit the
    commit messages.

Leena Miettinen's avatar
Leena Miettinen committed
402 403 404 405
    The following sections describe how to manage local and remote branches,
    apply patches, and use stashes.

    \section4 Working with Branches
406 407 408 409 410 411 412 413 414 415 416

    To work with Git branches, select \gui{Branches}. The checked out branch
    is shown in bold and underlined in the list of branches. Double-click branch
    names to edit them.

    \image qtcreator-vcs-gitbranch.png "Branches dialog"

    The following operations are supported:

    \table
        \header
417 418
            \li Menu Item
            \li Description
Leena Miettinen's avatar
Leena Miettinen committed
419 420 421
        \row
            \li \gui{Refresh}
            \li Refresh the list of branches.
422
        \row
423 424
            \li \gui{Add}
            \li Create new tracking and non-tracking branches.
425
        \row
426 427
            \li \gui{Remove}
            \li Remove a local branch. You cannot delete remote branches.
Leena Miettinen's avatar
Leena Miettinen committed
428 429 430
        \row
            \li \gui Rename
            \li Rename a local branch.
Leena Miettinen's avatar
Leena Miettinen committed
431 432 433 434
        \row
            \li \gui{Checkout}
            \li Check out the selected branch and make it current. You can stash
                changes you have made to tracked files.
435
        \row
436 437
            \li \gui{Diff}
            \li Show the differences between the selected and the current
438 439
                branch.
        \row
440 441
            \li \gui{Log}
            \li Show the changes in a branch.
442
        \row
Leena Miettinen's avatar
Leena Miettinen committed
443 444 445 446 447
            \li \gui Merge
            \li Join the development histories in two branches together.
        \row
            \li \gui Rebase
            \li Copy local commits to the updated upstream head.
448 449
    \endtable

Leena Miettinen's avatar
Leena Miettinen committed
450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473
    \section4 Applying Patches

    Patches are rewriting instructions that can be applied to a set of files.
    To apply a patch file that is open in \QC, select \gui Tools > \gui Git >
    \gui {Local Repository} > \gui {Apply from Editor}.

    To select the patch file to apply from the file system, select
    \gui {Apply from File}.

    \section4 Using Stashes

    With Git, you can put your current set of changes onto a virtual shelf
    called a \e stash. Stashes are useful, for example, to put aside a set of
    changes to work on higher priority tasks or to pull in new chages from
    another repository.

    To stash all local changes, select \gui Tools > \gui Git >
    \gui {Local Repository} > \gui Stash > \gui Stash. The working copy is reset
    to the state it had after the last commit.

    To display a dialog that shows all known stashes with options to restore,
    display or delete them, select \gui Stashes.

    To save a snapshot of your current work under a name for later reference,
Leena Miettinen's avatar
Leena Miettinen committed
474
    select \gui {Take Snapshot}. The working copy is unchanged. For example, if
Leena Miettinen's avatar
Leena Miettinen committed
475 476 477 478 479 480
    you want to try something and find out later that it does not work, you can
    discard the changes and return to the state of the snapshot.

    To remove a single stashed state from the stash list and apply it on top of
    the current working tree state, select \gui {Stash Pop}.

Leena Miettinen's avatar
Leena Miettinen committed
481 482 483 484 485 486 487 488
    \section3 Applying Actions to Commits

    To browse a directory or the commit history and to apply actions on the
    commits, select \gui Tools > \gui Git > \gui {Actions on Commits}. You can
    checkout, revert, or cherry-pick commits or view them in the diff editor.

    \image creator-git-commit-actions.png "Select a Git Commit dialog"

489 490
    \section3 Working with Remote Repositories

Leena Miettinen's avatar
Leena Miettinen committed
491 492 493 494 495 496 497 498 499 500 501 502 503
    In addition to the standard version control system functions, you can
    select \gui Tools > \gui Git > \gui {Remote Repository} > \gui Pull to
    pull changes from the remote repository. If there are locally modified
    files, you are prompted to stash the changes. Select \gui Tools >
    \gui Options > \gui {Version Control} > \gui Git and then select the
    \gui {Pull with rebase} check box to perform a rebase operation while
    pulling.

    \section4 Managing Remote Repositories

    To manage remote repositories available in Git, select \gui Tools > \gui Git
    > \gui {Remote Repository} > \gui{Manage Remotes}. Double-click the names
    and URLs of the remote repositories to edit them.
504 505 506 507 508

    The following operations are supported:

    \table
        \header
509 510
            \li Menu Item
            \li Description
Leena Miettinen's avatar
Leena Miettinen committed
511 512 513
        \row
            \li \gui{Refresh}
            \li Refresh the list of remote repositories.
514
        \row
515 516
            \li \gui{Add}
            \li Add a new remote repository.
517
        \row
518 519
            \li \gui{Fetch}
            \li Fetch all the branches and change information from a remote
520
                repository.
Leena Miettinen's avatar
Leena Miettinen committed
521 522 523
        \row
            \li \gui Push
            \li Push committed changes to the remote repository.
524
        \row
525 526
            \li \gui{Remove}
            \li Remove a remote repository.
Leena Miettinen's avatar
Leena Miettinen committed
527

528 529
    \endtable

Leena Miettinen's avatar
Leena Miettinen committed
530
    \section4 Using Git with Subversion
531

Leena Miettinen's avatar
Leena Miettinen committed
532 533 534
    You can use Git as a client for a Subversion server. To fetch changes from a
    Subversion repository to a Git repository, select \gui Tools > \gui Git >
    \gui {Remote Repository} > \gui Subversion > \gui Fetch.
535

Leena Miettinen's avatar
Leena Miettinen committed
536
    To view the Git Subversion log, select \gui Log.
537

Leena Miettinen's avatar
Leena Miettinen committed
538
    \section4 Reviewing Code with Gerrit
Leena Miettinen's avatar
Leena Miettinen committed
539 540 541 542 543 544 545 546 547

    If your Git project uses Gerrit for code reviews, you can view your changes
    in \QC.

    Select \gui Tools > \gui Options > \gui {Version Control} > \gui Gerrit to
    specify the connection to the Gerrit server.

    \image qtcreator-gerrit-options.png

Leena Miettinen's avatar
Leena Miettinen committed
548 549 550 551 552 553
    To push committed changes to Gerrit, select \gui Tools > \gui Git >
    \gui {Remote Repository} > \gui {Push to Gerrit}.

    To view the same information about each change as in the Gerrit
    web interface, select \gui Tools > \gui Git > \gui {Remote Repository} >
    \gui Gerrit.
Leena Miettinen's avatar
Leena Miettinen committed
554 555 556

    \image qtcreator-gerrit.png

557
    To view details of the selected change, select \gui Show.
Leena Miettinen's avatar
Leena Miettinen committed
558

559 560
    To cherry-pick the selected change to the local repository, select
    \gui {Cherry Pick}. To remove the change after testing it, select \gui Tools >
Leena Miettinen's avatar
Leena Miettinen committed
561 562
    \gui Git > \gui {Local Repository} > \gui Reset. In the
    \gui {Undo Changes to} dialog, select the
Leena Miettinen's avatar
Leena Miettinen committed
563 564 565 566 567 568
    state to reset the working directory to, and then select \gui OK.

    To check out the change in a headless state, select \gui Checkout.

    To refresh the list of changes, select \gui Refresh.

Leena Miettinen's avatar
Leena Miettinen committed
569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585
    \section3 Working with Git Tools

    To start the commit viewer for Git, select \gui Tools > \gui Git >
    \gui {Git Tools} > \gui Gitk. You can also start the tool to view commits in
    the current document or in the folder that contains the current document.
    To specify arguments for running Gitk, select \gui Tools > \gui Options >
    \gui {Version Control} > \gui Git.

    To use some other application for viewing Git history, such as GitX or
    QGit viewer, select \gui Tools > \gui Options > \gui {Version Control} >
    \gui Git and specify the path to the application executable in the
    \gui {Command} field. To start the application, select \gui Tools > \gui Git
    > \gui {Git Tools} > \gui {Repository Browser}.

    To resolve merge conflicts, select \gui Tools > \gui Git > \gui {Git Tools}
    > \gui {Merge Tool}.

586 587 588 589 590 591 592 593
    \section2 Using Additional Mercurial Functionality

    Mercurial is a free, distributed source control management tool.

    The \gui Mercurial submenu contains the following additional items:

    \table
        \header
594 595
            \li Menu Item
            \li Description
596
        \row
597 598
            \li \gui{Import}
            \li Apply changes from a patch file.
599
        \row
600 601
            \li \gui{Incoming}
            \li Monitor the status of a remote repository by listing
602 603
                the changes that will be pulled.
        \row
604 605
            \li \gui{Outgoing}
            \li Monitor the status of a remote repository by listing
606 607
                the changes that will be pushed.
        \row
608 609
            \li \gui{Pull}
            \li Pull changes from the remote repository.
610
        \row
611 612
            \li \gui{Push}
            \li Push changes to the remote repository.
613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637
     \endtable

    \section2 Using Additional Perforce Functions

    Perforce is a fast software configuration management system developed by
    Perforce Software.

    When you start \QC, it looks for the executable specified
    in the \gui{P4 command} field in \gui{Tools > Options > Version
    Control > Perforce}. If the file is not found, the following error
    message is displayed in the \gui {Version Control} output pane:
    \gui {Perforce: Unable to determine the repository: "p4.exe"
    terminated with exit code 1}. If you use Perforce, check that the
    path to the executable is specified correctly in the \gui{P4 command}
    field.

    If you do not use Perforce, you can disable the Perforce plugin to
    get rid of the error message. Choose \gui {Help > About Plugins} and
    deselect the \gui Load check box for the \gui Perforce plugin in the
    \gui {Version Control} group.

    The \gui Perforce submenu contains the following additional items:

    \table
        \header
638 639
            \li Menu Item
            \li Description
640
        \row
641 642
            \li \gui{Describe}
            \li View information about changelists and the files in them.
643
        \row
644 645
            \li \gui{Edit File}
            \li Open a file for editing.
646
        \row
647 648
            \li \gui{Opened}
            \li List files that are open for editing.
649
        \row
650 651
            \li \gui{Pending Changes}
            \li Group files for commit.
652 653 654 655 656 657
    \endtable

    \section2 Using Additional Subversion Functions

    Subversion is an open source version control system.

658 659 660
    In addition to the standard version control system functions, you can
    select \gui Tools > \gui Subversion > \gui Describe to display commit log
    messages for a revision.
661 662

*/