<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
    <head>  
        <title>NetBeans IDE - Versioning</title>
        <meta http-equiv="content-language" content="en">
        <meta name="description" content="DESCRIPTION HERE">
        <link rel="stylesheet" type="text/css" href="../../features.css">
        <link rel="stylesheet" type="text/css" href="/images_www/js/colorbox/colorbox.css">
    </head>
    <body>
        <script type="text/javascript" src="/images_www/js/colorbox/jquery.colorbox-min.js"></script>

        <script type="text/javascript">
            $(document).ready(function() {
                $('a.cbox').colorbox({rel: 'cbox', opacity: 0.7});
            });
        </script>
        <div style="margin:10px 20px 0px 0px;">
            <h1>Versioning</h1>
            <p class="xintro">
                <a href="../../images_www/v7/3/features/versioning-base-full.png"><img
                        src="../../images_www/v7/3/features/versioning-base-cut.png"
                        alt="Java editor features in NetBeans IDE"><br>
                    <span class="font-11">Click image for fullscreen preview</span></a> 
            </p>
            <p class="intro">
                NetBeans IDE lets you work easily and intuitively with a range of popular versioning systems
            </p>
            <!-- left text section start -->
            <a name="o1"></a>
            <span class="overview-right" id="im1"><a href="../../images_www/v7/3/features/ide-collaboration-version-full.png" class="cbox" title="Versioning"><img alt="Versioning" class="box" src="../../images_www/v7/3/features/ide-collaboration-version-cut.png"></a></span>
            <h2>Version Control Tools</h2>
            <p> Out of the box, NetBeans IDE lets you access Git, Mercurial, and Subversion repositories. Plugins
                are available for working with CVS and ClearCase repositories.</p> 
            <p>The NetBeans editor uses color coding to highlight
                lines that have been added, deleted, and modified. Tools are provided to pull,
                push, fetch, shelve, and view
                changes, diffs, and local history, as well as to resolve merge
                conflicts intuitively. Visual tools are provided for complex activities, such as
                merging a feature branch back into the trunk, to do diffs between branches and revisions,
                to switch between queues, and to support rebase operations.</p>
            <a href="../../kb/docs/ide/git.html" class="arr-link">
                Using Git Support in NetBeans IDE</a>
            <br/><a href="../../kb/docs/ide/mercurial.html" class="arr-link">
                Using Mercurial Support in NetBeans IDE</a>
            <br><a href="../../kb/docs/ide/subversion.html" class="arr-link">
                Using Subversion Support in NetBeans IDE</a>
            <br/><a href="../../kb/docs/ide/cvs.html" class="arr-link">
                Using CVS Support in NetBeans IDE</a>
            <br/><a href="../../kb/docs/ide/clearcase.html" class="arr-link">
                Using ClearCase Support in NetBeans IDE</a>
            <div class="line">&nbsp;</div>
            <!-- left text section end -->
            <table>
                <tr>
                    <td class="valign-top"><h2>Git</h2></td>
                    <!--<td></td>-->
                    <td class="valign-top"><h2>Mercurial</h2></td>
                    <!--<td></td>-->
                    <td class="valign-top"><h2>Subversion</h2></td>
                </tr>
                <tr>
                    <td class="valign-top" style="width:33%;padding-right:10px;"> 
                        <p> 
                            <span class="overview-centre" id="im8"><img
                                    src="../../images_www/v7/3/features/versioning-git.png" class="box "
                                    alt="Git"/></span><br/> 
                            Since Git is a distributed revision control 
                            system, you typically begin by using the IDE to
                            clone an external repository to work with. 
                            Use the IDE to push your changes back to the
                            original repository or to export your changes and 
                            send them to the owner.
                            <br/><br/>
                        </p>
                    </td>
                    <!--<td>&nbsp;</td>-->
                    <td class="valign-top"  style="width:33%;padding-right:10px;">
                        <p> 
                            <span class="overview-centre" id="im8"><img
                                    src="../../images_www/v7/3/features/versioning-mercurial.png" class="box "
                                    alt="Mercurial"/></span><br/> 
                            The IDE's Mercurial support 
                            lets you clone repositories and to manage changes to
                            version-controlled files as you work. 
                            In the IDE, you can call Mercurial commands
                            on both files and directories in the Projects,
                            Files, and Favorites windows. Also see <a href="http://netbeans.org/kb/docs/ide/mercurial-queues.html">Mercurial Queues Guide</a>.
                        </p>
                    </td>
                    <!--<td>&nbsp;&nbsp;&nbsp;</td>-->
                    <td class="valign-top"  style="width:33%">
                        <p>
                            <span class="overview-centre" id="im8"><img
                                    src="../../images_www/v7/3/features/versioning-subversion.png" class="box "
                                    alt="Subversion"/></span><br/> 
                            The IDE's Subversion support 
                            lets you to manage the evolution
                            of changes in version-controlled files
                            by displaying status information directly 
                            in the IDE's various windows (e.g. Projects, Files, Favorites, Versioning)
                            so that you can call Subversion commands as you work.
                            <br/><br/>

                        </p>
                    </td>
                </tr>
            </table>

            <h2>See Also</h2>
            <ul class="bigger">
                <li><a href="../../community/releases/81/index.html">NetBeans IDE 8.1 Release Page</a> for a list of highlighted features in the latest stable release.</li>                
                <li><a href="../../kb/trails/java-se.html">General Java Development Learning Trail</a> for tutorials that will help you get started.</li> 
            </ul>

        </div>
    </body>
</html>
