Giter VIP home page Giter VIP logo

bergerjac / gitextensions Goto Github PK

View Code? Open in Web Editor NEW

This project forked from gitextensions/gitextensions

1.0 1.0 0.0 372.5 MB

This fork of GitExtensions is primarily focused on creating an interactive view of git's common objects.

Home Page: http://code.google.com/p/gitextensions

License: GNU General Public License v3.0

Visual Basic 0.36% JavaScript 0.24% Shell 0.08% C# 98.61% C++ 0.61% C 0.10%

gitextensions's People

Contributors

8 avatar basewq avatar bergerjac avatar bleis-tift avatar danrigby avatar dominiqueplante avatar ferow2k avatar forki avatar fraga avatar gorbach avatar jacobstanley avatar jbialobr avatar kevmoo avatar kinddragon avatar linquize avatar lynxstv avatar mabako avatar mexx avatar nickmayer avatar otac0n avatar phillco avatar pvginkel avatar qgppl avatar showell-nic avatar spdr870 avatar torarvid avatar tt avatar turbo87 avatar vasily-kirichenko avatar vcpp avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

gitextensions's Issues

Go to stash

Revision grid contains only the top most stash. So we can navigate only to it.
I couldn't figure out how to get all stashes commits from git log command output.

Merge with Master

A major task, I think, will be to start pulling GitEx's Master changes into the left-panel/-main branch.

Drag-Drops

  • local branch -> HEAD = merge/rebase
  • local branch -> branches header = new branch
  • local branch -> remotes header = publish new
  • local branch -> remote branch = push
  • local branch -> favorites = add to favorites
  • remote branch -> local branch = pull/fetch
  • remote branch -> branches header = new local tracking branch
  • stash -> local branch = apply stash

NullReferenceException

System.NullReferenceException was unhandled by user code
Message=Odwołanie do obiektu nie zostało ustawione na wystąpienie obiektu.
Source=GitUI
StackTrace:
w GitUI.UserControls.RepoObjectsTree.Node.GetNode(TreeNode treeNode) w D:\projekty\GitExtensionsDev\GitUI\RepoObjectsTree\ROT.Nodes.cs:wiersz 86
w GitUI.UserControls.RepoObjectsTree.OnTreeDragOver(Object sender, DragEventArgs e) w D:\projekty\GitExtensionsDev\GitUI\RepoObjectsTree\ROT.DragDrops.cs:wiersz 92
w System.Windows.Forms.Control.OnDragOver(DragEventArgs drgevent)
w System.Windows.Forms.Control.System.Windows.Forms.IDropTarget.OnDragOver(DragEventArgs drgEvent)
w System.Windows.Forms.DropTarget.System.Windows.Forms.UnsafeNativeMethods.IOleDropTarget.OleDragOver(Int32 grfKeyState, Int64 pt, Int32& pdwEffect)
InnerException:

UriFormatException

var line = "Fetch URL: [email protected]:jbialobr/gitextensions.git"

System.UriFormatException was unhandled by user code
  Message=Nieprawidłowy identyfikator URI: schemat URI jest nieprawidłowy.
  Source=System
  StackTrace:
       w System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind)
       w System.Uri..ctor(String uriString, UriKind uriKind)
    -->w GitCommands.Git.RemoteInfo.GetURL(String line) w D:\projekty\gitextensions\GitCommands\Git\RemoteInfo.cs:wiersz 237
       w GitCommands.Git.RemoteInfo..ctor(String remoteShowOutput) w D:\projekty\gitextensions\GitCommands\Git\RemoteInfo.cs:wiersz 79
       w GitCommands.GitModule.<GetRemotesInfo>b__2a(String remote) w D:\projekty\gitextensions\GitCommands\Git\GitModule.cs:wiersz 2106
       w System.Linq.Enumerable.<>c__DisplayClass12`3.<CombineSelectors>b__11(TSource x)
       w System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
       w System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
       w System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
       w GitUI.UserControls.RepoObjectsTree.<OnUICommandsSourceChanged>b__e() w D:\projekty\gitextensions\GitUI\RepoObjectsTree\RepoObjectsTree.cs:wiersz 75
       w GitUI.UserControls.ValueWatcher`1.<CheckUpdateAsync>b__4() w D:\projekty\gitextensions\GitUI\RepoObjectsTree\ValueWatcher.cs:wiersz 55
       w System.Threading.Tasks.Task`1.InvokeFuture(Object futureAsObj)
       w System.Threading.Tasks.Task.InnerInvoke()
       w System.Threading.Tasks.Task.Execute()
  InnerException: 

KeyNotFoundException

System.Collections.Generic.KeyNotFoundException was unhandled by user code
Message=Dany klucz nie był obecny w słowniku.
Source=mscorlib
StackTrace:
w System.Collections.Generic.Dictionary2.get_Item(TKey key) w GitCommands.Git.RemoteInfo..ctor(String remoteShowOutput) w D:\projekty\gitextensions\GitCommands\Git\RemoteInfo.cs:wiersz 189 w GitCommands.GitModule.<GetRemotesInfo>b__2a(String remote) w D:\projekty\gitextensions\GitCommands\Git\GitModule.cs:wiersz 2106 w System.Linq.Enumerable.<>c__DisplayClass123.b__11(TSource x)
w System.Linq.Enumerable.WhereSelectArrayIterator2.MoveNext() w System.Collections.Generic.List1..ctor(IEnumerable1 collection) w System.Linq.Enumerable.ToList[TSource](IEnumerable1 source)
w GitUI.UserControls.RepoObjectsTree.b__e() w D:\projekty\gitextensions\GitUI\RepoObjectsTree\RepoObjectsTree.cs:wiersz 75
w GitUI.UserControls.ValueWatcher1.<CheckUpdateAsync>b__4() w D:\projekty\gitextensions\GitUI\RepoObjectsTree\ValueWatcher.cs:wiersz 55 w System.Threading.Tasks.Task1.InvokeFuture(Object futureAsObj)
w System.Threading.Tasks.Task.InnerInvoke()
w System.Threading.Tasks.Task.Execute()
InnerException:

Indicate if a Branch has been Abandoned

Sometimes, I'll merge a feature/bug branch into master and forget to delete it. Or, I'll push a branch to GitHub and submit a Pull Request.

It may be convenient if there was some sort of algorithm to detect "abandoned" branches.

popular branch = branch with frequent commits/merges (e.g. master)
important branch = branch with many commits/merges, but may not receive frequent commits/merges anymore (e.g. v2.34)

Signs of an "abandoned" branch:

  • merged into a popular/important branch AND hasn't had a commit in TimeSpan
  • merged into another branch which neither have had a commit in TimeSpan
  • pushed to remote for a Pull Request (which gets accepted) and hasn't had a commit in TimeSpan

Popular

  • frequency of commits
  • number of commmits
  • number of merges

Important

  • number of commits
  • number of merges
  • frequency of commits/merges (before being forgotten)

Indicators should probably be normalized to accommodate repositories which haven't been recently used.

Favorites

@jbialobr Is there only a favorites for branches?

How should favorites be laid out?

Sort Priority:

branches
    {favorite1}
    {favorite2}
    master
    issues
        iss5

Favorites Node:

branches
    favorites
        {favorite1}
        {favorite2}
    master
    issues
        iss5

Other suggestions?

Multiple reload

If you put a breakpoint you will see that reload is called two times at startup.

I think it would be better to react on GitUICommandsChanged event. Like it was in my branch.

    void UICommandsSource_GitUICommandsChanged(IGitUICommandsSource sender, GitUICommands oldCommands)
    {
        RepoChanged();
    }

Icons

This is a discussion about the icons.

@feinstaub @bergerjac
Could you work out common set of images?

https://github.com/bergerjac/gitextensions/blob/left-panel/-main/UiProgress.png

See also images changed by @bergerjac in this folder https://github.com/bergerjac/gitextensions/tree/left-panel/-main/GitUI/Resources/Icons.

@jbialobr @bergerjac For the first version of the tree I suggest using the existing appliction icons. Creating some grayscale versions of the branch icon (GitUI\Resources\Icons\originals\branch-led-orig.png), the tag, stash and remotes icons is easily done.

Settings

  • Left panel height
  • Revision grid height
  • Which nodes should be shown
  • Left panel width (splitter position)
  • Auto-Prune stale remote-tracking branches : Always, If Merged, Never

Context Actions to spawn Right-click context menus

It would be nice to assign a ContextMenu to each TreeNode (possibly during AddChild).

Requirements

  • keep UI elements out of Node classes (TreeNode is all right, ContextMenu is NOT)
  • add context actions quite easily without reconstructing the framework
  • each context menu item has: icon, translatable text, translatable tooltip

There will probably have to be some way to correlate icons to context actions using a key/value (Context.Text -> Icon) or similar algorithm.

Branches

  • New Branch...

Branch

  • Checkout
  • Create
  • Delete
  • Force Delete

Branch Path

  • Create Branch (Within)
  • Delete All
  • Force Delete All

Remotes

  • Add...
  • Delete All

Remote

  • Pull
  • Fetch
  • Prune
  • Rename
  • Delete

Remote Branch

  • Fetch
  • Create Branch...
  • Un-Track
  • Delete

Stashes

  • Save
  • Delete All

Stash

  • Show Diff
  • Pop
  • Apply
  • Create branch...
  • Delete

Tags

  • Create
  • Delete All

Tag

  • Delete
  • Replace

Submodules

  • Add
  • Update
  • Init

Submodule
?

Merge with master

There were added NuGet packages in master branch. They are added in per project manner - I don't understand why. Master branch is quite distant - could you consider doing a merge ?

Implementation

Do you plan to continue to develop left-panel? I would like to help you, as I realy miss this feature (especially for reviewing and deleting branches).
I think that not supported nodes (tags, stashes ...) could be hiden for now and implemented later.

Remote Branches Layout

currently, branches within remotes are laid out linearly:

origin
    issues/iss77
    issues/iss88
    master

The desired layout is as follows (similar to local branches).

origin
    issues
        iss77
        iss88
    master
    (untracked)
        issues
            iss22
        lorem

Notice the additional (untracked) group. This is for remote branches which are explicitly un-tracked by the user. Un-tracked branches should still be available but with a lower priority, which is why it may make sense to put them at the bottom of the list in their own group.

Stash onto Branch

Stash onto Branch

Current: opens the Stash dialog

Desired:
normal: Pop
Alt: Apply

Loading Indicator

Because RepoObjectsTree loads async, remotes node is loading noticeably later than branches and stashes. It leaves the user guessing about whether remotes
is actually loading or threw an exception.

There should be some kind of loading indicator (until the Tasks have completed)... probably an icon in the RepoObjectsTree header area.

Notifications

There needs to be a generic way to display that a DragDrop or (right-click) ContextAction failed.

Via a MessageBox, a StatusBar, or ... ?

Example: {Branch} right-click -> Delete and the delete fails.

This needs to be displayed to the user; as well, it will allow developers to cancel a UI update.


View the requirements discussion
Requirements:

Notifications (Icon N)

  • located in toolbar/statusbar
  • N = number of unread notifications
  • on click: show non-modal dialog which contains a stack layout of items similar to Most Recent Notification
  • configurable location

Most Recent Notification

  • displayed next to Notifications (Icon N)
  • popup shown for X seconds
  • top: discard button, and previous / next navigation arrows
  • bottom: actions specific to notification (e.g. Unresolved Merge Conflicts has Show Resolve Dialog button/link)

Most Recent

  • setting for: Most Recent Notification Expiration
  • setting for: Notification Item Expiration
  • setting for Notifications (Icon N) location
  • Unread Notifications non-modal dialog: ignore discard [Icon] NotificationText
  • Un-Ignore Notifications view
  • context actions in a context menu (discard | {developer-provided actions} | ignore)

Other Tasks

  • remove lock { } constructs
  • add Guid Id property to Notification class
  • move Expand All / Collapse All to RepoObjectsTree contextmenu, removing header

DragDrop Hints

DragDrop with hints. Imitation, being the sincerest form of flattery:
drag-drop-merge

Example:
Branch onto Branch should show
normal: {MergeIcon} Merge {DraggedBranch}
Alt: {RebaseIcon} Rebase {DraggedBranch}
#11 is similar where it'd be optimal to keep Icon references out of the Node classes; however, if it's easier to hack them in, go ahead.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.