bergerjac / gitextensions

This fork of GitExtensions is primarily focused on creating an interactive view of git's common objects.
http://code.google.com/p/gitextensions
GNU General Public License v3.0
1 stars 0 forks source link

Implementation #4

Closed jbialobr closed 11 years ago

jbialobr commented 11 years ago

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.

bergerjac commented 11 years ago

Well, I was trying to gauge interest. Obviously, it'd be a substantial change to the UI, so it'd need a lot of support to be integrated into master. But yes, in the long run, I think it would be an improvement to the overall UX.

Anyways, I've started work on stashes, just because I think it wouldn't be that difficult compared to others.

jbialobr commented 11 years ago

Branch left-panel/-main doesn't compile (there are missing some images) could you fix it? I will find tomorow some time to dive into this topic. Then we could wonder how to split the job.

bergerjac commented 11 years ago

apologies. should be good now.

jbialobr commented 11 years ago

Hi. I did some changes to make left panel translantable. But to make it to work, I need some changes from master branch. I tried to merge it, but there some changes not related to left panel I tihink. I coudn't make pull request because I couldn't find your repo on list showed by github. Could you review my changes in branch https://github.com/jbialobr/gitextensions/tree/left-panel/-main ? I also introduced RepoObjectsTreeNodeData to put there logic related to particular node type (branchNode, tagNode ..)

bergerjac commented 11 years ago

@jbialobr Your pull request had the inspiration to help me find the way. I've pushed changes and I think it may be ready for additional developer input. DragDrop architecture is in place (and easy to use).

jbialobr commented 11 years ago

I like your changes. There are two problems to solve:

  1. GoToRevision - it could be a delegate method on RepoObjectsTree assigned from FormBrowes.
  2. FormBrows should be informed about need to refresh RevisionGrid, there could be event on GitUiCommands to fire after repo state is changed ie. after checkout branch. This event also would be helpful to inform after changes done from modeless forms.
jbialobr commented 11 years ago

Hi, did you think about 1 and 2 from my previous comment?

bergerjac commented 11 years ago

Sorry about that; I didn't see the comment.

  1. I think GoToRevision method would be better within RevisionGrid class.
  2. I thought something like that would've already been in GitEx. Maybe put an event within GitUiCommands, like "RepoStateChanged" or something. Then hook onto all the GitUiCommands' events which change the repo's state and fire the event.
public GitUICommands(GitModule module)
{
    Module = module;
    PostDeleteBranch += OnRepoStateChanged;
    ...
}

Then, RevisionGrid could essentially do UICommands.RepoStateChanged += (o,e) => ForceRefreshRevisions();

jbialobr commented 11 years ago
  1. As I understand you agree to pass it as a delegate call to RepoObjectsTree.
  2. There are actions invoked from FormBrowse that could call RepoStateChanged many times until returned. It would be good to accumulate these events and call ForceRefreshRevisions only once. Simpler solution would be pass ForceRefreshRevisions as a delegate call.

I can't wait to use left panel to clear my repos from old branches. Could left panel task be partition into stages:

  1. branches, tags, stashes
  2. remotes, submoduls?
bergerjac commented 11 years ago

pass it as a delegate call to RepoObjectsTree

Apologies, but can you give me a small code example of what you mean. You mean like as an Action delegate?

Could left panel task be partition into stages?

Actually, branches and stashes frameworks are pretty much complete. I'm working on remotes as we speak. However, #17 needs to be addressed before #11 (ContextActions) is implemented.

In any event, I could definitely use feedback on #17 and if you want tags, by all means, you can start implementing that.

jbialobr commented 11 years ago

Could you review https://github.com/jbialobr/gitextensions/tree/left-panel/-main?

jbialobr commented 11 years ago

Is it(723a4e8fd1be121628e594717e5fde72bca309d0) good direction?