Don't refresh the commit/get latest automatically
Having an option to calculate/determine the synchronizing between source control and local objects can be triggered with a button action rather than automatically starting this process when the source control tab is in focus.
Every time I change from SQL Source Control tab to another SSMS tab and I change back, the Source Control restart the refresh process.
The tab has already a refresh button, I think that is enough. Otherwise we have to wait for ages when we talk about a big database. Sometimes is needed to check even other database and then all the process in Source Control is lost.
Why not to refresh only when the user requires it?
We’re currently thinking seriously about adding a SQL Source Control option to stop refreshes of the Commit list automatically.
In the first instance this will be a manual override (probably in an XML config file). When this is turned on, SQL Source Control will never automatically initiate the query to generate the list of objects to be committed. You will have to click the existing Refresh button to generate the list. The generated list will be remembered if you switch SSMS tabs and come back later to SQL Source Control’s Commit tab.
If you visit another database in Object Explorer, then the first database’s commit list will be remembered when you go back to it. However, for memory reasons, the data for only the last two databases will be stored in this way.
If the mechanism works then it is likely that this will be configurable from the user interface at a later date.
Note that this is separate from the background polling query to create the blue blobs in Object Explorer, which can continue to be disabled with its existing configuration item.
If you voted for this suggestion then please comment on whether the proposed solution sounds like it would work for you.
This would be better solution.
Can you also add a Combobox for selecting database instead of switching every time when different database selected in Object Explorer. It is not misleading when source control trying trying to show database not linked to source control.
Bernard Sheppard commented
This would work. We have not been able to get the dev team to use source control because of the slow speed.
This is such a good idea, our databases our fairly large and we have multiple work items in TFS. When checking items in I would love to check in bits and pieces to separate user stories without having to wait for a refresh every time.
Excellent! FIXED! Despite not being a SSMS2012 lover, at least it's now fully usable.
Thanks to all.
AdminStephanie (Admin, Red Gate) commented
Thanks for the information about the MDI-mode in SSMS2008R2.
If you upgrade to v3.2, we just persisted user selections on the Commit tab if you leave and come back. Hopefully that means you won't lose everything you've just set up to commit.
NEVER had this issue in MDI-mode in SSMS2008R2 - it's a royal pain in the butt now I'm in SSMS2012.
The auto-refresh is an absolutely nutty idea - we lose everything we've set up to commit!
Cannot understand why this DEFICIENCY is not at the top of the MUST FIX list - "Under Review" @ 2/14/2013 isn't "feeling the love" ;-)
Just upgraded to 22.214.171.124.
Workaround: Use SSMS2008R2 in MDI mode - issue solved for now!
(If I had more votes: +3 at least)
A lot of people agree with you. The following is a link to a similar suggestion with quite a few votes.
A checkbox option to enable/disable the auto refresh with a manual refresh button next to it would suffice.
I find myself double checking other documents and SQL screens to make sure I'm good to go for a commit and it's annoying that the screen auto refreshes when I know nothing pertaining to my checkin has changed.
This is a absolute must. We commit our changes associating them with a TFS work item. Having to commit certain changes to a work item and then wait for a refresh before commiting further changes to another work item is really time consuming and not required.
Having the ability to manually refesh the page following several commits would be a huge advantage.
Even with the SQL Source Control tab closed, a compare is performed every time that I select a database. (This is indicated by the gray gumball turning green and spinning...) On some of our larger databases, this can take up to an hour to complete. We have 10 dbas accessing a box. Every time that they single click on a db name in SSMS, a compare is going to fire off. This creates way too much overhead for this tool to be completely implemented. I love the end result though. Lets just add a "Compare" button instead of the auto-check.
"Stephanie (Admin, Red Gate) commented · March 19, 2010 09:17 · Flag as inappropriate · Delete
For now, you could close the SQL Source Control tab when you don't need it. You can click "x" when the tab is focused or you can right-click on it and select "hide." Then, when you want to Commit or Get Latest, just right-click on the linked db and select this option. This will open the SQL Source Control tab and perform just the behaviour you selected in the list. After committing/getting, remember to close the tab again so it doesn't refresh every time it comes into focus. "
I am curious to see how this was done:
"philcart commented · July 29, 2012 17:50 · A lot of the requests for manual refresh stem from the fact that SSC is so slow in doing the refresh. Myself, I've updated the config file to refresh manually, just for that reason."
Could you possibly post how you updated the config file?
Shmuel Tannenbaum commented
Thank you for re-opening this Chris.
We would very much like to have the ability to turn off automatic refreshing. This is especially important to us when we commit many objects at once and need to go back and forth between SSMS windows, while deciding what should be checked-in now and what later etc... having to wait for a refresh each time is not very pretty.
It's also worth mentioning here, that we have submitted another issue separately that each time we come back to the commit/get latest (after the refresh is done) it loses the selections. This just adds to the frustration and we'd really like to see that fixed.
Thanks again for all your patients with us
@David - Using 126.96.36.19978, this is quicker than prior versions. The nice commit page is a little bit of a waste as it's not seen as much now.
I guess the "slowness" is more a perception thing than anything else. The constant scripting of objects for comparison during the commit/get latest process doesn't help.
For the undo,
- open Commit tab
- watch progress go through 1/4 -> 4/4
- select the items I want to undo
- right-click and choose Undo Changes...
- look at new dialog that says "4/4 calculating changes" (surely there is nothing more to calculate)
- select the item I want to undo
- click "Undo Changes"
- watch another dialog that seems to go through the same steps again.
Would also be good to see a lot of this stuff done in the background as well. So we don't see the 1/4 -> 4/4 steps at all. When we open the commit/get latest tabs they already has the information there. Background processing would also allow some context switching without interrupting the SSC processing.
I sit more in the DBA\Developer role and as such am constantly connected to more than 2-3 servers, doing dev work and maybe checking a production data issue. When I'm working on a development item in database A, I go to the commit tab, refresh, then switch to a different server to check some other unrelated issue (maybe production data issue), switch back to commit tab and have to go through the whole refresh process again. This becomes very annoying and counter-productive as I can't do anything else while I'm waiting for SSC to complete it's work.
Another one, would like to be able to have multiple instances of SSC open so I can work on different development server/databases. Given that each database has it's own SSC workspace, why can't I have multiple instances of SSC open?
AdminDavid Atkinson (Admin, Red Gate) commented
@Phil - could you tell us which version of SQL Source Control you're using? Also, you gave an example of the undo being slow. Are there any other examples that you'd like to bring to our attention?
A lot of the requests for manual refresh stem from the fact that SSC is so slow in doing the refresh. Myself, I've updated the config file to refresh manually, just for that reason.
I still think that the comparison process is overly complicated and is duplicated in a couple of steps and this leads to the lengthy delays on even a small database.
eg: when I want undo a change to an object, I select the object and watch as it works out what objects to undo, instead of just undoing what I've selected.
I'm guessing that the majority of users know what they're doing, but SSC is trying to account for the small percentage of users that don't know what they're doing so want the tool to do everything for them.
SSC as a product, and Red-Gate by association, has lost a lot of ground in my company because it's lack of speed, and lack of background processing is seen to actually hinder our development process. It's especially relevant when I get asked about the performance by the CIO when I put forward a bill for renewing the maintenance contract.
Please get some devs on this and lets see some real progress.
Claes Wedin commented
Would also be great if a warning was shown if the result was not "up to date" (=different from if you ran a refresh) . This check shold be run in the background so you don't have to wait for it to complete.
AdminChris Smith (Admin, Red Gate) commented
We've re-opened this 'idea' following your feedback.
Some of you would prefer the commit/get latest refresh process to always be manually initiated, rather than the conditional refresh we have implemented in SQL Source Control.
Please vote for this idea if you would rather have complete control over the refresh of commit and get latest tabs.
Claes Wedin commented
This is GOOD, but I expected more:
The selection of objects you made should not be changed when you return!
Let me explain with an example:
When moving objects from development to acceptance test we link the Test db to the Dev.branch. Then we walk through the GetLatest list and select which objects to move to the test db. During this work we often need to open other objects (related) and look at the code. After opening another tab and switch back to SC tab all checkbox are back to default...
OK, we can have another instance of SSMS or have another tab group to do this, but we often do this work in a group and using a projector, so this becomes a bit "messy"...
or maybe we are not working as expected with the branches?
We had not found a convienient way to move between branches in TFS with full control of every object...
This is largely due to the slow performance of SQL Source Control. I should be able to fire it off, then work on other tabs for a while, then come back to review the results, just like my web browser. It's a major pain to have it recalculate every time I visit the tab. What am I to do? Go have a coffee while my machine sits there useless while it chugs through processing just because it cant process in the background? Major bugbear.
It would also be great if the refresh could happen in the background so I can do work in another tab while the refresh is chugging along.