|Problems with the Synchronize Workflow [message #668186]
||Wed, 04 May 2011 11:43
| Stefan Hansel
Registered: July 2009
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 #669589 is a reply to message #668573]
||Tue, 10 May 2011 20:41
| Dariusz Luksza
Registered: July 2010
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.03189 seconds