Problems with the Synchronize Workflow [message #668186] |
Wed, 04 May 2011 11:43 |
Stefan Hansel Messages: 103 Registered: July 2009 |
Senior Member |
|
|
I'm pretty new to EGit and try to adopt my Workflows to the new fancy DVCS world.
After having worked with EGit for about three weeks, I still feel not comfortable with the Synchronize Workflow.
Synchronizing is something I heavily do by the way to commit stuff. This is my personal quality assurance before every commit (i.e. looking that I didn't leave a System.out.println), so I never use the direct commit-command at all.
As this is the most used feature of EGit I'm using on a daily basis I'm very interested in streamlining this workflow.
So here is what I'm stumbling about:
- when I choose 'Synchronize' an extra dialog opens, giving me the chance to choose my Synchronize target.
As the destination I can choose between 'local branch', 'tags' and my remote repository seems to be listed as well.
Unfortunately the remote repository is selected as the default, so I always have to change it to the local branch and hit 'OK'.
This is three clicks (click combox, choose, click apply) to get into my most used Synchronize view and these clicks really annoy me most. This dialog also does not remember my last selection, which might reduce the pain. I also didn't find an option to change the default.
Comparing with Mercurial Eclipse integration: They have two menu items: 'Synchronize With ...' and 'Synchronize', the latter one being the one I'd really need as this also omits an extra dialog.
I wished EGit has the same. Am I the only one using the Synchronize view for local commits or am I doing something wrong?
- Synchronize View: when I have reviewed my changes and am committing them, they are not removed from the Synchronize view. Knowing how CVS + Mercurial handle this, I find this unintuitive as well.
I am used to a Synchronize view where I get less and less files when commiting step by step
- Synchronize against remote location: here I guess I don't know much enough from GIT, but when I'm offline and choose the remote location, I get a synchronize view with a lot of changes. I don't know where there are coming from, these are definitely not the changes/commits/diff with my last Push as a baseline.
So right now it shows me a lot of changes and I don't know what to do with them, nor how to interpret them.
For some reason I expected this view to show me changes, that I didn't push yet (is there any other view to view these?)
I hope you can give me some advise on the points above!
By the way - I'm very happy to see a lot of progress between 0.11 and 0.12 - some other bugs that bothered are fixed now (like changing+saving stuff in the compare-editor of the Synchronize view).
|
|
|
Re: Problems with the Synchronize Workflow [message #668486 is a reply to message #668186] |
Thu, 05 May 2011 20:06 |
|
First of all I want to thank you Stefan for yours feedback!
I'm currently working on improving user experience in synchronization. I've recently open two bugs against such improvements (bug 344888 against sync-wizard improvements and 344891 for 'context' synchronization) feel free to drop some comments there. I've also implement ides described in those bugs, they are currently waiting in our code review system.
In case of synchronizing with remote location you need to download remote changes into yours local repository (or using git terminology 'fetch them') then you can launch synchronization whenever you want to. When you are synchronizing with remote branch I would suggest to try out 'Git Change Set' model where you can see changes organized in commits.
We already had hot discussion with model presentation should be activated by default and 'workspace model' won. Unfortunately this model represents flat structure of commits and "squash all changes into one", therefore it isn't best solution to use it for reviewing incoming changes IMHO
btw. Recently Benjamin Muskalla push patch that allows choose with model will be the default one, but AFAIK this change isn't included in 0.12 release.
|
|
|
|
Re: Problems with the Synchronize Workflow [message #669589 is a reply to message #668573] |
Tue, 10 May 2011 20:41 |
|
Stefan Hansel wrote on Fri, 06 May 2011 05:53
Should I open a new bug/enhancement request, so that commited changes in the Synchronize View will be removed like with other team providers?
Yes, please. AFAIR such bug was not reported before.
Stefan Hansel wrote on Fri, 06 May 2011 05:53
As to the Fetch/Pull ... looks like I do understand the implications now.
I never did an explicit fetch, but then I also worked alone so for some reason I expected Eclipse/Git would at least know 'everything' that I pushed already.
If you are working alone on a single branch git knows what you already pushed, this is a 'normal' git feature.
Stefan Hansel wrote on Fri, 06 May 2011 05:53
Does it make sense to provide a (default selected) option 'Fetch before synchronizing against remote' or a warning if someone forgot that?
Or is there any reasonable usecase that I should be able to synchronize against the remote without doing a fetch before.
If not then we should protect users like me from their own mistakes
Git is designed this way because it is useful! You don't need to have a internet or network connection to work with git (until you decide to push/pull/fetch changes to/from remote repository). This is useful when you are traveling or hot fixing bugs in customer office because you can commit everything into local repository or move into given point in repo history without network/vpn/etc... And basically I don't want to put limits on advanced users.
But from the second hand, I always work in my office where I always have network connection. Therefore I think that it is quite reasonable to launch fetch action before synchronization when:
* at least one of selected branches is remote branch
* or one of selected branch tracks remote branch
We should also provide configuration option for disabling this default behavior. And also EGit should inform you about this configuration option when you first time launch synchronization offline.
BTW. From my humble point of view there is no straight forward way from cvs/svn into git without learning. There is a new terminology connected with git, new workflows, new possibilities and new features! I've strongly recommend reading the ProGit book (progit.org/book/).
|
|
|
|
Powered by
FUDForum. Page generated in 0.02652 seconds