NetBeans Git UI Specification
________.__ __ ____ ___.___ _________
/ _____/|__|/ |_ | | \ | / _____/_____ ____ ____
/ \ ___| \ __\ | | / | \_____ \\____ \_/ __ \_/ ___\
\ \_\ \ || | | | /| | / \ |_> > ___/\ \___
\______ /__||__| |______/ |___| /_______ / __/ \___ >\___ >
\/ \/|__| \/ \/
_- 1 NetBeans Git UI Specification
- 1.1 Setup (Config Files)
- 1.2 Repository Init
- 1.3 Repository Clone
- 1.3.1 Clone Wizard - first step
- 1.3.2 Clone Wizard - second step
- 1.3.3 Clone Wizard - third step
- 1.4 Fetch
- 1.4.1 Fetch Wizard - first step
- 1.4.2 Fetch Wizard - second step
- 1.5 Commit
- 1.6 Add or Exclude to or from commit
- 1.7 Ignore
- 1.8 Reset Changes (Revert local changes)
- 1.9 Reset
- 1.10 Revert Changes (Revert previous commits)
- 1.11 Quick overview of file status in IDE
- 1.11.1 Annotation by color
- 1.11.2 Annotation by text label
- 1.12 View Modifications (Show Changes)
- 1.13 Inline diff - show local modifications in a files sidebar
- 1.14 Diff - view local modifications
- 1.15 Export uncommited changes (Local changes)
- 1.16 Export commits (Previous commits)
- 1.17 Apply Patch
- 1.18 Search history of files, Show History View
- 1.19 Checkout Revision
- 1.20 Switch to Branch
- 1.21 Blame
- 1.22 Create Tag
- 1.23 Create Branch
- 1.24 Merge from Branch
- 1.25 Cherrypick from Branch
- 1.26 Manage Branches and Tags (Remove Branch, Manage Tags)
- 1.27 Save Stash
- 1.28 Manage Stash
- 1.29 Rebase Branch (TODO)
- 1.30 Pull
- 1.30.1 Pull Wizard - first step
- 1.30.2 Pull Wizard - second step
- 1.31 Push
- 1.31.1 Push Wizard - first step
- 1.31.2 Push Wizard - second step
- 1.31.3 Push Wizard - third step
- 1.32 Synchronize
- 1.33 Main Menu
- 1.34 Revision Chooser
_
Setup (Config Files)
- 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
UI identical to Mercurial
Repository Clone
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
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
+--------------------------------------------------------------------------- | 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
UI Identical to Mercurial. Git | Exclude from Commit. Git | Include in Commit
Ignore
UI Identical to Mercurial. Git | Toggle Ignore
Reset Changes (Revert local changes)
---------------------------------------------------------------------
| 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
---------------------------------------------------------+
| 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)
---------------------------------------------------------+ | 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
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 filesuch 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)
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
Similar to Mercurial UI. The changes shown in the editor sidebar will always be between Working Tree and HEAD
Diff - view local modifications
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)
similar to Mercurial UI
Export commits (Previous commits)
similar to Mercurial UI
Apply Patch
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
+---------------------------------------- | 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
+----------------------------------------+ | 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
UI similar to Mercurial
Create Tag
+-------------------------------+ | Create new tag | +-------------------------------+ | Name: ___________________ | | Message: | | +--------------------------+ | | | | | | | | | | | | | | +--------------------------+ | | | | [ ] Associate tag with commit | | __________________ | | Revision:__________________V | | | | +------++------+ | | |Create||Cancel| | | +------++------+ | +-------------------------------+
Create Branch
+------------------------------+ | Create new branch | +------------------------------+ | | | Revision:__________________V | | Name: ___________________ | | +------++------+ | | |Create||Cancel| | | +------++------+ | +------------------------------+
Merge from Branch
+-----------------------------+ | Merge from Branch | +-----------------------------+ | +-----------+ | | Select Branch:| V | | +-----------+ | | +-----++------+ | | |Merge||Cancel| | | +-----++------+ | +-----------------------------+
Cherrypick from Branch
---------------------------------------------------------+
| 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)
+----------------------------------------------+
| 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
+---------------------------+ | Save local modifications | +---------------------------+ | Description: | | +-----------------------+ | | | | | | | | | | | | | | +-----------------------+ | | +------++------+ | | | Save ||Cancel| | | +------++------+ | +---------------------------+
Manage Stash
+-----------------------------------------+ | Manage Stashes | +-----------------------------------------+ | Stashes | | +------------------------------+ | | |Stash 1 and desc... | Pop | | |Another stash... | Apply | | | | Remove | | | | | | | | | | +------------------------------+ | | +------------------------------+ | | +------------------------------+ Close | +-----------------------------------------+
Rebase Branch (TODO)
Pull
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
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
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.
