Last updated April 19, 2011 10:13, by ovrabec
Feedicon  

NetBeans Git UI Specification


    ________.__  __     ____ ___.___    _________
   /  _____/|__|/  |_  |    |   \   |  /   _____/_____   ____   ____
  /   \  ___|  \   __\ |    |   /   |  \_____  \\____ \_/ __ \_/ ___\
  \    \_\  \  ||  |   |    |  /|   |  /        \  |_> >  ___/\  \___
   \______  /__||__|   |______/ |___| /_______  /   __/ \___  >\___  >
          \/                                  \/|__|        \/     \/


_

_

Setup (Config Files)

use case description

  • Repository specific config files. User invokes Popup | Git | Properties or Team | Properties
  • User specific and global config files accessible through Tools | Options | Misc | Git

These actions will open corresponding config files in Editor

TODO - draw UI

Repository Init

use case description

UI identical to Mercurial

Repository Clone

use case description

Clone Wizard - first step

 +---------------------------------------------------------------------
 |            Clone Git Repository 
 +---------------------------------------------------------------------
 | 
 | Specify Git repository location.
 | Repository URL: [git://host.xz[:port]/path/to/repo.git/__[v]
 |                  git://host.xz[:port]/path/to/repo.git/
 |
 |
 | User:       [__________] (leave blank for anonymous access)
 |
 | Password:   [__________]
 |
 |
 | [ Proxy Configuration... ]
 |
 | Checking connection...
 | [///////////////--------------------------------] [ Stop ]
 |
 | [Warning]	
 +----------------------------------------------------------------------

where:

  • Repository URL - combo box - defaults to the previously used value. Combo list contains last 5 recently used urls and is preset with available protocols.
  • url preview - label - placed under the url combo; prevides an example for the actually selected protocol
  • User - textfield - username; defaults to previously used value. visible only for urls where authentification is required
  • Password - text field - password; no default value. visible only for urls where authentification is required
  • Proxy Configuration - button - opens the IDEs proxy setting dialog in Options
  • Checking connection - progress bar - infinite progress indicating a running connection check. visible only if in progress
  • Stop - combo box - stops the connection check. visible only if in progress bar in progress
  • Warning - label - displays warnings if necessary - e.g. "Invalid Url".

Clone Wizard - second step

 +-------------------------------------------------------------
 |            Select Remote Branches 
 +-------------------------------------------------------------
 | 
 | Remote Branches
 | +-------------------------------
 | |[x] master
 | |[ ] branch1
 | |[ ] branch2
 | |
 | +------------------------------- 
 |  
 +-------------------------------------------------------------

where:

  • Remote Branches - list with checkboxes - lists all branches availabe in the repository to be cloned

Clone Wizard - third step

 +-------------------------------------------------------------
 |            Destination Directory 
 +-------------------------------------------------------------
 | 
 | Parent Directory: [____________________________] [Browse...]
 |
 | Clone Name:       [____________________________] 
 |
 |
 | Chekout Branch:   [master___________________[v]]
 |
 | Remote Name:      [origin______________________]
 |
 | 
 | [x] Scan for Netbeans Projects after clone 
 |
 +-------------------------------------------------------------

where:

  • Parent Directory - textbox - a local directory which will contains the new clone directory
  • Browse - button - browse for local directories
  • Clone Name - textbox - the clones directory
  • Chekout Branch - textbox - the branch to be checked out after clone. defaults to the currently active branch in the remote repository
  • Remote Name - textbox - defaults to "origin". specify the Remote name to keep track of the upstream repository.
  • Scan for NetBeans Projects... - checkbox - if selected the newly created clone will be scanned for NetBeans projects

Fetch

use case description

Fetch Wizard - first step

 +---------------------------------------------------------------------
 |            Fetch from Remote Repository 
 +---------------------------------------------------------------------
 | 
 | ( )-Configured repository
 |
 |   [origin:git://aaaaaaaaaa [V]]
 |    origin:git://bbbbbbbbbb
 |    remote1:http://cccccccc
 |
 | (o)-Specify Git repository location
 |
 |   Remote Name:      [origin___________________[V]]
 |                      remote1...
 |
 |   Repository URL: [git://host.xz[:port]/path/to/repo.git/__[v]
 |                  git://host.xz[:port]/path/to/repo.git/
 |
 |   User:       [__________] (leave blank for anonymous access)
 |
 |   Password:   [__________]
 |
 |   [ Proxy Configuration... ]
 |
 | Checking connection...
 | [///////////////--------------------------------] [ Stop ]
 |
 | [Warning]	
 +----------------------------------------------------------------------

where:

  • Configured repository - radio button; fetch will run on a repository already set up and selected from the combo box underneath
  • Setup new repository - radio button; fetch will run on another git repository location
  • Remote Name - name of the remote remote branches will be fetched into, when e.g. set to origin, branches will be saved locally as remotes/origin/*
  • Repository URL - combo box - defaults to the previously used value. Combo list contains last 5 recently used urls and is preset with available protocols.
  • url preview - label - placed under the url combo; prevides an example for the actually selected protocol
  • User - textfield - username; defaults to previously used value. visible only for urls where authentification is required
  • Password - text field - password; no default value. visible only for urls where authentification is required
  • Proxy Configuration - button - opens the IDEs proxy setting dialog in Options
  • Checking connection - progress bar - infinite progress indicating a running connection check. visible only if in progress
  • Stop - combo box - stops the connection check. visible only if in progress bar in progress
  • Warning - label - displays warnings if necessary - e.g. "Invalid Url".

Fetch Wizard - second step

 +-------------------------------------------------------------
 |            Select Remote Branches 
 +-------------------------------------------------------------
 | 
 | Remote Branches
 | +-------------------------------
 | |[x] master -> origin/master [U]
 | |[ ] branch1 -> origin/branch1 [A]
 | |[ ] branch2 -> originbranch2 [D]
 | |
 | +------------------------------- 
 |  
 +-------------------------------------------------------------

where:

  • Remote Branches - list with checkboxes - lists all branches availabe in the repository to be fetched
  • [U] - branch in the local repository will be updated
  • [A] - branch will be added to the local repository
  • [D] - branch will be deleted in the local repository

Commit

use case description

 +---------------------------------------------------------------------------
 | Commit Message:
 | +-------------------------------------------------------------------------
 | |
 | |
 | |
 | +-------------------------------------------------------------------------
 |
 | v Files to Commit: 
 | [WTvsH] [IvsH] 
 | +-------------------------------------------------------------------------
 | | Commit | File          | Status            | Commit Action | Path 
 | +-------------------------------------------------------------------------
 | | [x]    | NewClass.java | Modified in Index | Commit        |...lication/
 | |        |               |                   |               |
 | +-------------------------------------------------------------------------
 | 
 | v Update Issues
 | +-------------------------------------------------------------------------
 | |  (Bugtracking related options)
 | +-------------------------------------------------------------------------
 +---------------------------------------------------------------------------

where:

  • Commit Message textarea - the commit message
  • Files to Commit table - lists the files to be committed
    • Commit column - editable (checkbox) - determines if the files should be included into the c----------------------------------
 | |
 | |
 | |
 | +-------------------------------------------------------------------------
 |
 | v Files to Commit: 
 | [WTvsH] [IvsH] 
 | +-------------------------------------------------------------------------
 | | Commit | File          | Status            | Commit Action | Path 
 | +-------------------------------------------------------------------------
 | | [x]    | NewClass.java | Modified in Index | Commit        |...lication/
 | |        |               |                   |               |
 | +-------------------------------------------------------------------------
 | 
 | v Update Issues
 | +-------------------------------------------------------------------------
 | |  (Bugtracking related options)
 | +-------------------------------------------------------------------------
 +---------------------------------------------------------------------------

where:

  • Commit Message textarea - the commit message
  • Files to Commit table - lists the files to be committed
    • Commit column - editable (checkbox) - determines if the files should be included into the commit
    • File column - file to be committed
    • Status column - the files status
    • Commit Action column - describes what happens with the file during the commit - Add/Commit/Excluded from commit
    • Path column - files path in the repository
  • [IvsH] toggle button - Index vs. Head determines that only actually staged files will be listed in the Files Table and eventually committed
  • [WTvsH] toggle button (default) - Working Tree vs Head - determines that all local changes (staged in Index and in Working Tree) will be committed. Applies also for not yet versioned (added) files.
  • Update Issues panel - determines what bugtracking issue and how it should be changed (not in the scope of the git module and this document).

The rows in the Files Table will have context (right-click) menu:

 +---------------------------------
 | Exclude/Include from/to Commit
 +---------------------------------
 | Diff
 +---------------------------------
  • support sign-off?

Add or Exclude to or from commit

use case description

UI Identical to Mercurial. Git | Exclude from Commit. Git | Include in Commit

Ignore

use case description

UI Identical to Mercurial. Git | Toggle Ignore

Reset Changes (Revert local changes)

use case description


     ---------------------------------------------------------------------
    |                 Revert Local Changes                     
    |---------------------------------------------------------------------
    | (.) Revert All Uncomited Changes in Working Tree and Index 
    |     [ ] Remove Also New Files and Folders
    |
    | ( ) Revert Uncomited Changes in Working Tree to the State in Index
    |     [ ] Remove Also New Files and Folders
    | 
    | ( ) Revert only Uncomited Changes in Index to HEAD
    +--------------------------------------------------------------------

where:

  • Revert All Uncomited Changes in Working Tree and Index - radio button - reverts all tracked files in working tree and in index to their state from HEAD
  • Revert Uncomited Changes in Working Tree to the State in Index - radio button - reverts all tracked files in working tree to their state from Index
  • Remove Also New Files and Folders - check box - if selected also untracked files and folders will be removed
  • Revert only Uncomited Changes in Index to HEAD - radio button - reverts Index to the state in HEAD

Reset

use case description


     ---------------------------------------------------------+
    |               Reset Modifications                       |
    |---------------------------------------------------------|
    |Reset current head to chosen revision                    |
    |                       +---------------+                 |
    | Choose from Revisions:|               V                 |
    |                       +---------------+                 |
    |  -Details---------------------------------------------+ |
    | |Description:                                         | |
    | |Author:                                              | |
    | |Date:                                                | |
    | +-----------------------------------------------------+ |
    |                                                         |
    |  -Options---------------------------------------------+ |
    | |(o) Reset index, but not working tree (--mixed)      | |
    | |( ) Do not touch index nor working tree (--soft)     | |
    | |( ) Reset index and working tree (--hard)            | |
    | +-----------------------------------------------------+ |
    |                                                         |
    |                                   ------+ ------+ ----+ |
    |                                  |Reset ||Cancel||Help| |
    |                                  +------++------++----+ |
    +---------------------------------------------------------+

--merge not supported

Revert Changes (Revert previous commits)

use case description



   ---------------------------------------------------------+
  |               Revert Modifications                      |
  |---------------------------------------------------------|
  | Revert chosen revision                                  |
  |                       +---------------+                 |
  | Choose from Revisions:|               V                 |
  |                       +---------------+                 |
  |  -Details---------------------------------------------+ |
  | |Description:                                         | |
  | |Author:                                              | |
  | |Date:                                                | |
  | +-----------------------------------------------------+ |
  |                                                         |
  | [x] Commit patch                                        |
  |  -Commit message--------------------------------------+ |
  | |<default commit message>                             | |
  | |                                                     | |
  | |                                                     | |
  | |                                                     | |
  | +-----------------------------------------------------+ |
  |                                                         |
  |                                   ------+ ------+ ----+ |
  |                                  |Revert||Cancel||Help| |
  |                                  +------++------++----+ |
  +---------------------------------------------------------+

TODO: what to do with merge commits which requires --mainline parent-number?

reverting merges is not supported

this is very similar to git cherry-pick

Quick overview of file status in IDE

use case description

Present file status in the IDE by:

  • coloring file names in file views (Projects/Files/Favorites) and editor tabs
  • an optional text label at a files name describing the status value

Recognized status values :

  • Up to Date - no changes at all
  • Added - file was either created in the working tree or is already added in index
  • Modified - file was either modified in the working tree or is already modified in index
  • Deleted - file was either deleted in the working tree or is already deleted in index
  • Ignored - file is ignored
  • Renamed - file was renamed in index
  • Unmerged - file is in merge conflict
  • TODO copy?

Annotation by color

  • Up to Date (No specific color)
  • Added
  • Modified
  • Deleted
  • Ignored
  • Renamed
  • Unmerged


The git status command returns two status values for a file:

  • a status describing differences between the files working tree and index state
  • a status describing differences between the files index state and current HEAD commit

in case there are two different status values available at one moment then the coloring will be chosen accordingly to the difference between a files state in the working tree compared to its current HEAD commit. In other words - the status color will describe the change which will be applied on HEAD after a successful git add/rm <file> and git commit -a <file> invocation.

e.g. lets have a file staged as Added but in the meantime Modified one more time in the working tree

$git status -s file
AM file
such a scenario will result in the file being colored as new -> a following git add file and git commit file would create the file on HEAD.

Unmerged (conflicting) files will be generally annotated by red color until they aren't resolved by an explicit user action.

Annotation by text label

While the color annotations will provide a merged information about a files state (see also Annotation by color) the textual annotation in the Project, Files, Favorites view and in the editor tabs will be consistent with the git status --short output and reflect both, the status between index and HEAD as well as between working tree and index:

   -  = unmodified
   M = modified
   A = added
   D = deleted
   R = renamed
   C = copied
   U = updated but unmerged

   Ignored files are not listed.
   X          Y     Meaning
   -------------------------------------------------
             [MD]   not updated
   M        [ MD]   updated in index
   A        [ MD]   added to index
   D         [ M]   deleted from index
   R        [ MD]   renamed in index
   C        [ MD]   copied in index
   [MARC]           index and work tree matches
   [ MARC]     M    work tree changed since index
   [ MARC]     D    deleted in work tree
   -------------------------------------------------
   D           D    unmerged, both deleted
   A           U    unmerged, added by us
   U           D    unmerged, deleted by them
   U           A    unmerged, added by them
   D           U    unmerged, deleted by us
   A           A    unmerged, both added
Please note, that:

  • locally added files, speak such that were newly created but aren't staged yet, will be rendered by the IDE as added in working tree.
  • ignored files will be simply annotated with a one letter text

          Meaning
 -------------------------------------------------
 I        Ignored
e.g.

 +---------------------------------------------
 | Projects 
 +---------------------------------------------
 | +--TeaStore
 |     +--src
 |        +--org.japanese.tea
 |           +-- Sencha.java
 |           +-- Bancha.java[-M]
 |           +-- Matcha.java[M-]
 |           +-- Gyokuro.java[AM]
 |           +-- Genmaitcha.java[R-]
 |           +-- Kabusecha.java[C-]
 |           +-- Coffee.java[I]
 |           +-- Koitcha.java[DD]
 |


Files with an interesting status (!=uptodate) will have a tooltip showing their current status in a more explicit form. e.g.

 +-----------------------------------------+
 | Gyokuro.java                            |
 | Added in Index/Modified in Working Tree |
 +-----------------------------------------+

View Modifications (Show Changes)

use case description

Similar to Mercurial UI. Lists all files with status != uptodate including those which are deleted

 +--------------------------------------------------------------------------+
 | Git - TeaStore [teastore]                                                |
 +--------------------------------------------------------------------------+
 | [ All ] [ Working Tree ] [ Index ] | [ R ] [ D ]   [ C ]                 |
 |--------------------------------------------------------------------------|
 |_______File________|_Status_(Index/Working Tree)_|_____Location___________|
 | Bancha.java       | -/Modified                  |.../src/org/japanese/tea|
 | Matcha.java       | Modified/-                  |teestore/nbproject      |
 | Gyokuro.java      | New/Modified                |.../src/org/japanese/tea|
 | Genmaitcha.java   | Renamed/-                   |.../src/org/japanese/tea|
 | Kabusecha.java    | Copied/-                    |.../src/org/japanese/tea|
 | Houjicha.java     | Deleted/-                   |.../src/org/japanese/tea| 
 | Koitcha.java      | Deleted/Deleted             |.../src/org/japanese/tea|
 |                   |                             |                        |
 +--------------------------------------------------------------------------+

where:

  • Git title bar - shows the name of the objects (projects, folders, files) the Show Changes action was invoked on. The name pattern is Git - <object-name>. If the Show Changes action was invoked on multiple objects then the title bar shows the number of objects: Git - <x> Objects.
  • All toggle button - if selected all changes (between working tree and HEAD) are shown in the table. If no changes are available it shows "<No Changes>" label centered in the table. Always enabled.
  • Working Tree toggle button - if selected only changes between working tree and index are shown in the table. If no changes are available it shows "<No Changes>" label centered in the table. Always enabled.
  • Index toggle button - if selected only changes between index and HEAD are shown in the table. If no changes are available it shows "<No Changes>" label centered in the table. Always enabled.
  • R (Refresh Status) button - refreshes the status of versioned objects (projects, folders, files) shown in the Versioning window. Button tooltip is Refresh Status. Always enabled.
  • D (Diff) button - opens the Diff window in the editor. The diff button is enabled if the table isn't empty. Button tooltip is Diff "<object-name>" where the object name is the same as object name shown in the title bar of versioning window. Depending on the selected toggle button (All, Working Tree, Index) it shows the following differences:
    • All - diff view shows changes between working tree and HEAD
    • Working Tree - diff view shows only changes between working tree and index.
    • Index - diff view shows only changes between index and HEAD.
  • C (Commit) button - invokes the commit action on the files shown in the Versioning window. Button tooltip is Commit "<object-name>" where the object name is the same as object name shown in the title bar of versioning window. Always enabled. Depending on the selected toggle button (All, Working Tree, Index) it opens the commit dialog in a respective state - Commit Index or Working Tree Changes (see also Commit).
  • Changes table - shows the files that are changed.
    • File table column - shows the icon and file name of files that aren't up-to-date or ignored. Label is in gray, red, green, blue or black color depending on the file state (see above).
    • Status table column - shows the status of files in the table depending on the All, Working Tree and Index toggle buttons. If All is selected both status values are shown, otherwise only the respective value either between working tree and index, or index and HEAD. The column header label will also be set change accordingly to "Status (Index/Working Tree)"/ "Index Status" / "Working Tree Status"
    • Location table column - shows the folder path of files in the table starting from the repositories top level folder

Inline diff - show local modifications in a files sidebar

use case description

Similar to Mercurial UI. The changes shown in the editor sidebar will always be between Working Tree and HEAD

Diff - view local modifications

use case description

The diff window shows the difference between files in working tree, index and HEAD. Build from three main components:

  • Toolbar
  • Files Table - the same as in other NetBeans VCS systems - see example bellow
  • Diff View - the same as in other NetBeans VCS systems - see example bellow
  -------------------
 / TeaStore [ Diff ] \ 
 +---------------------------------------------------------------------
 | [ All ] [ Working Tree ] [ Index ] [ /\ ] [ \/ ]  [ R ] [ C ]  |
 |---------------------------------------------------------------------
 |
 | Files Table (lists modified files)
 |
 |---------------------------------------------------------------------
 |
 | Diff View (compares two files)
 |
 +---------------------------------------------------------------------

where:

  • All toggle button - if selected all changes (between working tree and HEAD) are shown in the diff view. If no changes are available it shows a "<No Changes>" label centered in the table. Always enabled.
  • Working Tree toggle button - if selected only changes between working tree and index are shown in the diff view. If no changes are available it shows a "<No Changes>" label centered in the table. Always enabled.
  • Index toggle button - if selected only changes between index and HEAD are shown in the diff view. If no changes are available it shows a "<No Changes>" label centered in the table. Always enabled.
  • /\ and \/ buttons - navigate to next or previous change in the diff view
  • R (Refresh Status) button - refreshes the status of versioned objects (projects, folders, files) shown in the Versioning window. Button tooltip is Refresh Status. Always enabled.
  • C (Commit) button - invokes the commit action on the files listed in the Files Table. Button tooltip is Commit "<object-name>" where the object name is the same as object name shown in the title bar of diff window. Always enabled. Depending on the selected toggle button (All, Working Tree, Index) it opens the commit dialog in a respective state - Commit Index or Working Tree Changes. (see also Commit)


Files Table and Diff View (example)

Export uncommited changes (Local changes)

use case description

similar to Mercurial UI

Export commits (Previous commits)

use case description

similar to Mercurial UI

Apply Patch

use case description

similar to Mercurial UI

Search history of files, Show History View



+---------------------------------------------------------------------------+
|             Repository Browser                                            |
+---------------------------------------------------------------------------+
|  Git Repository: netbeans.git                                             |
| +-----------------------------------------------------------------------+ |
| |+      > added documentation             (peter)  April 17, 2009, 13:20| |
| ||`|    > Better exception handling   (emptyvoid)  April 12, 2009,  8:12| |
| || |    v fixed bug with menu scaling (emptyvoid)  April 11, 2009,  8:10| |
| || |        ID: 125hgfr4215w45e7r47s  U org/netbeans/Bla.java           | |
| |`.|        Show Diff                 A org/netbeans/Foo.java           | |
| || +        Cherry Pick                                                 | |
| || |`|      Revert                    Show Remainig Files               | |
| || | |  > test                         (jbecicka)  April 10, 2009,  8:10| |
| || | |                                                                  | |
| |`.| |                                                                  | |
| || `.|                                                                  | |
| || | `.  Show more (10, 50, 100, all)                                   | |
| || | | |                                                                | |
| || | | |                                                                | |
| || | | |                                                                | |
| +-----------------------------------------------------------------------+ |
|   Search History                                                          |
|                                                                           |
|   Message:__________________________   From: ---o----------- Beginning    |
|   Author: __________________________   To:   ----------o---- Today        |
|                                                            +--------+     |
|                                                            | Search |     |
|                                                            +--------+     |
+---------------------------------------------------------------------------+


Checkout Revision

use case description


  +----------------------------------------
  |  Checkout Revision                     
  +----------------------------------------
  |           +-----------------+  +------+
  |  Revision |                 |  |Select|
  |           +-----------------+  +------+
  |                                        
  |  [x] Checkout as new branch
  |      Branch Name: ________                 
  |                                        
  |                     +--------++------+ 
  |                     |Checkout||Cancel| 
  |                     +--------++------+ 
  +----------------------------------------
if there are modified files in working copy:
  +---------------------------------------------+
  | You have local modification in working copy.|
  | You can throw them away or merge.           |
  |                         +----------++-----+ |
  |                         |Throw away||Merge| |
  |                         +----------++-----+ |
  +---------------------------------------------+

Switch to Branch

use case description


  +----------------------------------------+
  |  Switch to Branch           
  +----------------------------------------+
  |           
  |  Branch:  [_________________________V]
  |           | branch
  |           | master
  |           | origin/master
  |           | .....
  |           
  |  [x] Checkout as new branch
  |      Branch Name: ________              
  |                                        
  |                     +------++------+ |
  |                     |Switch||Cancel| |
  |                     +------++------+ |
  +----------------------------------------+
where

  • Branch - combo box with all available branches

if there are modified files in working copy:

  +---------------------------------------------+
  | You have local modification in working copy.|
  | You can throw them away or merge.           |
  |                         +----------++-----+ |
  |                         |Throw away||Merge| |
  |                         +----------++-----+ |
  +---------------------------------------------+

Blame

use case description

UI similar to Mercurial

Create Tag

use case description




  +-------------------------------+
  |       Create new tag          |
  +-------------------------------+
  | Name:    ___________________  |
  | Message:                      |
  | +--------------------------+  |
  | |                          |  |
  | |                          |  |
  | |                          |  |
  | +--------------------------+  |
  |                               |
  | [ ] Associate tag with commit |
  |           __________________  |
  |  Revision:__________________V |
  |                               |
  |              +------++------+ |
  |              |Create||Cancel| |
  |              +------++------+ |
  +-------------------------------+

Create Branch

use case description


   +------------------------------+
   |       Create new branch      |
   +------------------------------+
   |                              |
   | Revision:__________________V |
   | Name:    ___________________ |
   |             +------++------+ |
   |             |Create||Cancel| |
   |             +------++------+ |
   +------------------------------+

Merge from Branch

use case description

 +-----------------------------+
 | Merge from Branch           |
 +-----------------------------+
 |               +-----------+ |
 | Select Branch:|           V |
 |               +-----------+ |
 |             +-----++------+ |
 |             |Merge||Cancel| |
 |             +-----++------+ |
 +-----------------------------+

Cherrypick from Branch

use case description

 
    ---------------------------------------------------------+
   |               Cherry-pick from Branch                   |
   |---------------------------------------------------------|
   |                          +---------------+              |
   | Cherry pick from Branch: |               V              |
   |                          +---------------+              |
   |                          +---------------+
   | Choose from Revisions:   |               V              |
   |                          +---------------+              |
   |  -Details---------------------------------------------+ |
   | |Description:                                         | |
   | |Author:                                              | |
   | |Date:                                                | |
   | +-----------------------------------------------------+ |
   |                                                         |
   | [x] Commit patch                                        |
   |  -Commit message--------------------------------------+ |
   | |<default commit message>                             | |
   | |                                                     | |
   | |                                                     | |
   | |                                                     | |
   | +-----------------------------------------------------+ |
   |                                                         |
   |                             ------------+ -----+ -----  |
   |                             |Cherry-pick||Cancel||Help| |
   |                             +-----------++-----+ +----+ |
   +---------------------------------------------------------+

 

TODO: what to do with merge commits which requires --mainline parent-number?

Very similar to git revert

Manage Branches and Tags (Remove Branch, Manage Tags)

use case description

use case description


  +----------------------------------------------+
  |  Git Repository                              |
  +----------------------------------------------+
  | + Branches                                   |
  |   + Local Branches                           |
  |     master                                   |
  |   + Remote Branches                          |
  |     origin/test                              |
  |     origin/master                            |
  | + Tags                                       |
  |   tag11                                      |
  |   tag12                                      |
  | + Remotes                                    |
  |   + origin                                   |
  |     git://git.kernel.org/pub/scm/git/git.git |
  +----------------------------------------------+

popup menus:
               +-------------+
     Branches  |Create Branch|
               +-------------+
               +-------------+
     Branches1 |Checkout     |
               |Merge        |
               |Delete       |
               +-------------+
               +-------------+
     Tag1      |Checkout     |
               |Delete       |
               +-------------+

how to select which one?

Save Stash

use case description

  +---------------------------+
  | Save local modifications  |
  +---------------------------+
  | Description:              |
  | +-----------------------+ |  
  | |                       | |
  | |                       | |
  | |                       | |
  | +-----------------------+ |
  |          +------++------+ |
  |          | Save ||Cancel| |
  |          +------++------+ |
  +---------------------------+

Manage Stash

use case description


+-----------------------------------------+
|    Manage Stashes                       |
+-----------------------------------------+
|  Stashes                                |
| +------------------------------+        |
| |Stash 1 and desc...           | Pop    |
| |Another stash...              | Apply  |
| |                              | Remove |
| |                              |        |
| |                              |        |
| +------------------------------+        |
| +------------------------------+        |
| +------------------------------+ Close  |
+-----------------------------------------+

Rebase Branch (TODO)

use case description

Pull

use case description

Pull Wizard - first step

 +---------------------------------------------------------------------
 |            Pull from Remote Repository 
 +---------------------------------------------------------------------
 | 
 | ( )-Configured repository
 |
 |   [origin:git://aaaaaaaaaa [V]]
 |    origin:git://bbbbbbbbbb
 |    remote1:http://cccccccc
 |
 | (o)-Specify Git repository location
 |
 |   Remote Name:      [origin___________________[V]]
 |                      remote1...
 |
 |   Repository URL: [git://host.xz[:port]/path/to/repo.git/__[v]
 |                  git://host.xz[:port]/path/to/repo.git/
 |
 |   User:       [__________] (leave blank for anonymous access)
 |
 |   Password:   [__________]
 |
 |   [ Proxy Configuration... ]
 |
 | Checking connection...
 | [///////////////--------------------------------] [ Stop ]
 |
 | [Warning]	
 +----------------------------------------------------------------------

where:

  • Configured repository - radio button; pull will run on a repository already set up and selected from the combo box underneath
  • Specify Git repository location - radio button; pull will run on another git repository location
  • Remote Name - name of the remote remote branches will be fetched into, when e.g. set to origin, branches will be saved locally as remotes/origin/*
  • Repository URL - combo box - defaults to the previously used value. Combo list contains last 5 recently used urls and is preset with available protocols.
  • url preview - label - placed under the url combo; prevides an example for the actually selected protocol
  • User - textfield - username; defaults to previously used value. visible only for urls where authentification is required
  • Password - text field - password; no default value. visible only for urls where authentification is required
  • Proxy Configuration - button - opens the IDEs proxy setting dialog in Options
  • Checking connection - progress bar - infinite progress indicating a running connection check. visible only if in progress
  • Stop - combo box - stops the connection check. visible only if in progress bar in progress
  • Warning - label - displays warnings if necessary - e.g. "Invalid Url".

Pull Wizard - second step

 +-------------------------------------------------------------
 |            Select Remote Branches 
 +-------------------------------------------------------------
 | 
 | Remote Branches
 | +-------------------------------
 | |[x] master -> origin/master [U]
 | |[ ] branch1 -> origin/branch1 [A]
 | |[ ] branch2 -> originbranch2 [D]
 | |
 | +------------------------------- 
 | 
 | Branch origin/master will be merged into current HEAD
 |
 +-------------------------------------------------------------

where:

  • Remote Branches - see fetch ui spec
  • Branch origin/master will be merged into current HEAD - notification about what branch will be merged into current HEAD

Push

use case description

Push Wizard - first step

 +---------------------------------------------------------------------
 |            Push to Remote Repository 
 +---------------------------------------------------------------------
 | 
 | ( )-Configured Repository
 |
 |   [origin:http://aaaaaaaaaa [V]]
 |    origin:http://bbbbbbbbbb
 |    remote1:http://cccccccc
 |
 | (o)-Specify Git Repository Location
 |
 |   Repository URL: http://host.xz[:port/path/to/repo.git/__[v]
 |                  http://host.xz[:port]/path/to/repo.git/
 |
 |   User:       [__________] (leave blank for anonymous access)
 |
 |   Password:   [__________]
 |
 |   [ Proxy Configuration... ]
 |
 | Checking connection...
 | [///////////////--------------------------------] [ Stop ]
 |
 | [Warning]	
 +----------------------------------------------------------------------

The fields have the same/similar meaning as for Git_ui#Pull

Push Wizard - second step

 +-------------------------------------------------------------
 |            Select Local Branches 
 +-------------------------------------------------------------
 | 
 | Local Branches
 | +-------------------------------
 | |[x] master [U]
 | |[ ] branch1 [A]
 | |[ ] branch2 [D]
 | |
 | +------------------------------- 
 |  
 +-------------------------------------------------------------
  • user selects local branches to push to a remote repository
  • (U)pdate, (A)dd, (D)elete from remote repository
  • at least one has to be selected

Push Wizard - third step

 +-------------------------------------------------------------
 |            Update Local References 
 +-------------------------------------------------------------
 | 
 | Remote Branches
 | +-------------------------------
 | |[x] master -> origin/master [U]
 | |[ ] branch1 -> origin/branch1 [A]
 | |[ ] branch2 -> originbranch2 [D]
 | |
 | +------------------------------- 
 |  
 +-------------------------------------------------------------
  • displayed only when user selected Configured Repository in the first step, otherwise this makes no sense (well, probably)
  • selected local reference will be updated to the HEAD of pushed branches

Synchronize

use case description

UI should be probably similar to "Git history"

Main Menu

    +----+
... |Team| Tools Window  ...
    +----+--------+
    |Team Server >|
    +-------------| +-------------------+
    |CVS         >| |Initialize Project |
    |Git         >|>|-------------------|
    |Mercurial   >| |Status             |
    |Subversion  >| |Diff               |
    |.            | |Checkout...        |
    |.            | |Commit...          |
    +-------------+ |Add                |
                    |-------------------| +--------------------------+
                    |Export           > |>|Export Diff...            |
                    |Apply Patch...     | |Export Uncomitted Changes |
                    |Clone Other...     | +--------------------------+
                    |-------------------|
                    |Pull...            |
                    |Push...            |
                    |Fetch...           | +-------------------+
                    |Merge            > |>| Merge Changes     |
                    |-------------------| | Resolve Conflicts |
                    |Show History       | +-------------------+
                    |Show             > |>+----------------+
                    |-------------------| |Show Annotations|
                    |Revert...          | |Show Incomming  |
                    |Reset...           | |Show Out        |
                    |-------------------| +----------------+
                    |Toggle Ignore      |
                    |Properties         |
                    +-------------------+

Revision Chooser

The revision chooser should provide a way to quickly select a revision used by all sorts of git actions. Some actions like merge, checkout, etc. accept only branches, others like checkout paths, create branch or reset accept also revisions from the history, which are not branches.

  • The chooser should provide a quick access to all branches, tags or symbolic references.
  • The chooser should display a limited number of revisions from the history next to present branches.




  +-----------------------------------------------------------+
  | Revision Chooser                                          |
  |+------------------------+-------------------------------+ |
  ||HEAD                    |  Revisions                    | |
  ||+ Branches              |                               | |
  ||  + Local Branches      |  d4b07ada96f3cbb4d  26.3.2010 | |
  ||    master              |  dw2ert6t98q72345b  23.3.2010 | |
  ||  + Remote Branches     |  34534508530983094  20.3.2010 | |
  ||    origin/test         |  44b07ada345934543  19.3.2010 | |
  ||    origin/master       |  45555555431534523  18.2.2010 | |
  ||+ Tags                  |                               | |
  ||  tag11                 |  next 10 | 50 | all           | |
  ||  tag12                 |                               | |
  |+--------------------------------------------------------+ |
  || Details <selected revision>                              |
  |+--------------------------------------------------------+ |
  ||  Message:                                              | |
  ||  so once more replacing the lib, now it should be      | |
  ||  truly up to date                                      | |
  ||  Author:                                               | |
  ||  Jan Becicka                                           | |
  ||  Date:                                                 | |
  ||  26.3.2010                                             | |
  |+--------------------------------------------------------+ |
  +-----------------------------------------------------------+

  • Initially the revisions set displays revisions from all branches. As you select branches in the repository browser area, the revisions area is filtered and only revisions from the selected branch are displayed
  • Browser/revisions areas should be hidable. For example, there's no need (or more specifically it's undesireable) to display revisions in case of the merge action.

Project Features

Wiki Controls

About this Project

VersionControl was started in November 2009, is owned by tpavek, and has 102 members.
By use of this website, you agree to the NetBeans Policies and Terms of Use (revision 20160708.bf2ac18). © 2014, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo
 
 
Close
loading
Please Confirm
Close