Toad for Oracle 12.0 Team Coding with Git

Hello!

Thus far, I have primarily developed for platforms such as Windows and Android, and I have grown quite fond of the git SCM tool and the GitHub website for managing repositories. I am now going to be doing primarily database work, so I recently acquired a license of Toad for Oracle 12.0. I noticed git is absent from the Team Coding configuration options. Is it possible to configure it to use git anyway?

I also watched a video that suggests that the Team Coding model uses the check-out/check-in workflow of the SCMs that it supports. Is it possible to disable that to fit a more distributed paradigm like the one that git was designed around?

If you don’t know about git, you’re probably wondering why on earth I would want to disable the check-out/check-in paradigm. Just trust that doing so fits a lot better with git and it’s distributed paradigm and doesn’t result in the problems you probably think it would.

Thanks,
Michael

Morning Michael,
Stephen B (the version control guy) will jump on me if I get this wrong, but bear with me! :slight_smile:
The way toad uses (external) version control systems is, as far as I recall, based on a API definition laid down by Microsoft many years ago, and still, as far as I know, subject to an NDA for some reason. (Although that might have changed!)
This API works in the manner of Microsoft’s own VC system, the name of which escapes me even though I used it at work some years ago, and that is based on checking stuff out, modifying it, and then back in again.
The other supported VC systems work in a similar manner, and if not actually identical, are close enough to allow a DLL to be built that connects Toad to the underlying VC system.
Git, on the other hand, is different. A “check in” as you know is merely a staging of files or directories prior to some more work being done, or to a commit.
In the past, I used Subversion and while Toad didn’thave it as an option back then, I used it in the normal manner:

  • Check out the folder & files;
  • Open Toad and work with the checked out files etc;
  • Tested and confirmed all was well;
  • Committed the changed - outside of Toad.
    The reason I did it this way was because Subversion allows me to edit and fix a number of files to resolve a problem, or to add a feature or whatever, Toad’s version control at the time, only allowed me to check-in/commit one file - the one in the active editor tab.
    Subversion used a database-like “commit” where you had to commit all the files, or the commit had to fail for all of them. Committing one at a time wasn’t in the spirit of Subversion and so that’s why I did it outside of Toad.
    Might I respectfully suggest, until Toad is able to work with distributed version control systems like Git, that you do something similar to the above?
    I haven’t tried it myself, but I’m wondering if the check-out/in controls in Toad would actually do anything with Git? I also wonder what DLL you are using to connect Toad with Git, because it should work according to the standard API definition mentioned above.
    I use Git in my Raspberry Pi coding work, you can find some of it on GitHub under my real name, Norman Dunbar, but I’m pretty sure Git and Toad are pretty much incompatible - as Subversion and Toad was a few versions back!
    – Cheers,
    Norm. [TeamT]

Thanks Norm for jumping in.

As Norm points out, the source control model in Toad follows the Check in / check out model of the Microsoft SCC API. There is no concept of staged check ins.
Toad can support any source control provider that publishes an SCC driver, and also natively supports serveral of the more common of the centralized systems, such as SVN and Team Foundation Server. There are some SCC plugins for Git. I have looked at one from
PushOK but have not tested.

We do have a plan to support Git on the Toad SRS. As both you and Norm have pointed out this will involve a change to how Toad handles check in. With code freeze
for Toad 12.1 August, this will most likely by in place in the Toad 12.5 spring release.

Stephen

From: Norm [TeamT] [mailto:bounce-NormTeamT@toadworld.com]

Sent: Sunday, July 28, 2013 6:21 AM

To: toadoracle@toadworld.com

Subject: Re: [Toad for Oracle - Discussion Forum] Toad for Oracle 12.0 Team Coding with Git

Re: Toad for Oracle 12.0 Team Coding with Git

Reply by Norm [TeamT]

Morning Michael,

Stephen B (the version control guy) will jump on me if I get this wrong,

but bear with me! :slight_smile:

The way toad uses (external) version control systems is, as far as I

recall, based on a API definition laid down by Microsoft many years ago,

and still, as far as I know, subject to an NDA for some reason.

(Although that might have changed!)

This API works in the manner of Microsoft’s own VC system, the name of

which escapes me even though I used it at work some years ago, and that

is based on checking stuff out, modifying it, and then back in again.

The other supported VC systems work in a similar manner, and if not

actually identical, are close enough to allow a DLL to be built that

connects Toad to the underlying VC system.

Git, on the other hand, is different. A “check in” as you know is merely

a staging of files or directories prior to some more work being done, or

to a commit.

In the past, I used Subversion and while Toad didn’thave it as an option

back then, I used it in the normal manner:

  • Check out the folder & files;

  • Open Toad and work with the checked out files etc;

  • Tested and confirmed all was well;

  • Committed the changed - outside of Toad.

The reason I did it this way was because Subversion allows me to edit

and fix a number of files to resolve a problem, or to add a feature or

whatever, Toad’s version control at the time, only allowed me to

check-in/commit one file - the one in the active editor tab.

Subversion used a database-like “commit” where you had to commit all the

files, or the commit had to fail for all of them. Committing one at a

time wasn’t in the spirit of Subversion and so that’s why I did it

outside of Toad.

Might I respectfully suggest, until Toad is able to work with

distributed version control systems like Git, that you do something

similar to the above?

I haven’t tried it myself, but I’m wondering if the check-out/in

controls in Toad would actually do anything with Git? I also wonder what

DLL you are using to connect Toad with Git, because it should work

according to the standard API definition mentioned above.

I use Git in my Raspberry Pi coding work, you can find some of it on

GitHub under my real name, Norman Dunbar, but I’m pretty sure Git and

Toad are pretty much incompatible - as Subversion and Toad was a few

versions back!

Cheers,

Norm. [TeamT]

To reply, please reply-all to this email.

Stop receiving emails on this subject.

Or
Unsubscribe from Toad for Oracle - General
notifications altogether.

Toad for Oracle - Discussion Forum

Flag
this post as spam/abuse.

Thank you very much for your insight. I’m a complete Toad newby, and was unaware that Toad used a standardized API for it’s SCM integration. That is immensely helpful.

Is there a mailing list I can join to get notification of a beta version of 12.5 when the time comes?

Also, the scenario I’m envisioning for how this would be most useful for my work environment is that Toad basically just keeps a database on the individual developers’ machines synchronized with the Git repositories also on each respective machine – meaning no central repository for Team Coding would be necessary, at least for Git. I don’t know how much you can share about the plans at this time, but does this sound like the sort of thing you’ll be doing with the official Git support?

You can apply to join the beta program here

http://www.toadworld.com/products/toad-for-oracle/toad_for_oracle_beta_program/default.aspx

If you subscribe to the beta group in Toad world you get an update of with the Developer notes each beta release.

I need to some more work on this before fleshing out the details of how this behaves. In theory it should work. Toad treats the source control repository as a location for storing and managing source. Where it is located does not really
matter, as long as Toad knows where to look. In the Git scenario, Toad checks in source to the local version of the repository and performs diffs etc against this. Git handles merges and commits. Does this sound about right?

Stephen

From: michaelj [mailto:bounce-michaelj@toadworld.com]

Sent: Monday, July 29, 2013 9:04 AM

To: toadoracle@toadworld.com

Subject: RE: [Toad for Oracle - Discussion Forum] Toad for Oracle 12.0 Team Coding with Git

RE: Toad for Oracle 12.0 Team Coding with Git

Reply by michaelj

Is there a mailing list I can join to get notification of a beta version of 12.5 when the time comes?

Also, the scenario I’m envisioning for how this would be most useful for my work environment is that Toad basically just keeps a database on the individual developers’ machines synchronized
with the Git repositories also on each respective machine – meaning no central repository for Team Coding would be necessary, at least for Git. I don’t know how much you can share about the plans at this time, but does this sound like the sort of thing you’ll
be doing with the official Git support?

To reply, please reply-all to this email.

Stop receiving emails on this subject.

Or
Unsubscribe from Toad for Oracle - General
notifications altogether.

Toad for Oracle - Discussion Forum

Flag
this post as spam/abuse.

That sounds right to me. That level of integration would be just about perfect. Any of the other features that you could implement probably wouldn’t be worth it since they’re already handled so brilliantly by tools like GitHub for Windows and even Git itself. Personally, I don’t mind hitting the command line or other applications as part of my workflow. My main issue is easing the process of synchronizing a database with changes in an SCM repository and vice versa. I’d imagine my fellow Git users would concur. Thanks a lot for your help and for listening to a user even as new as I!

Thanks Michael. Once we start putting out betas, I would really appreciate your input and suggestions. Out Beta users really help to make Toad a great product.

Stephen

From: michaelj [mailto:bounce-michaelj@toadworld.com]

Sent: Monday, July 29, 2013 9:37 AM

To: toadoracle@toadworld.com

Subject: RE: [Toad for Oracle - Discussion Forum] Toad for Oracle 12.0 Team Coding with Git

RE: Toad for Oracle 12.0 Team Coding with Git

Reply by michaelj

That sounds right to me. That level of integration would be just about perfect. Any of the other features that you could implement probably wouldn’t be worth it since they’re already handled
so brilliantly by tools like GitHub for Windows and even Git itself. Personally, I don’t mind hitting the command line or other applications as part of my workflow. My main issue is easing the process of synchronizing a database with changes in an SCM repository
and vice versa. I’d imagine my fellow Git users would concur. Thanks a lot for your help and for listening to a user even as new as I!

To reply, please reply-all to this email.

Stop receiving emails on this subject.

Or
Unsubscribe from Toad for Oracle - General
notifications altogether.

Toad for Oracle - Discussion Forum

Flag
this post as spam/abuse.

Afternoon Stephen,
On 29/07/13 14:21, Stephen Beausang wrote:

In the Git scenario, Toad checks in source to the local version of the
repository and performs diffs etc against this. Git handles merges and
commits. Does this sound about right?
While I'm "on a roll" and haven't got anything wrong yet! :wink:
As far as I can see, Toad would do the normal commit and such like, based on the local repository. I don't see any different between using got and a local one than using something like Subversion and a (potentially) remote one.
Toad wouldn't - unless you supplied some more buttons - do the pushes (and merges) from the local repository (aka branch in Git terms) to the remote repository.
Git encourages forks, the more the merrier, and unless the user has privileges to update the master repository, everything happens on the user's clone/copy which is help locally.
I suspect that the SCC interfaces for Git will only carry out work at the local level and anything that the user wishes or needs to do "higher up the food chain" from their local repository, would need to be done out side Git.
I don't know how much Git you know, but I have a repository at GitHub - NormanDunbar/PiSound: A small utility to manage sound on the Raspberry Pi. Where it goes, volume, mute etc. From the command line., for example.
If that was Subversion, any changes committed by Toad would go straight back there. However, with Git, I need to locally clone the above to a local copy:
git clone GitHub - NormanDunbar/PiSound: A small utility to manage sound on the Raspberry Pi. Where it goes, volume, mute etc. From the command line.
That would create "PiSound" as a new folder, under Git control, with the contents of the repository inside the folder.
I make changes to the files, add new ones etc, and when done:
git add file_a file_2 ...
Even if these files exists in the (local) repository, they will be "staged" - in whatever state they currently are - ready for a future commit:
git commit [-m "descriptive text"]
and this will commit - to the local repository - everything currently staged. So far, there's nothing that Toad cannot handle, I don;t think.
The problem is now, all the changes I have made need to be pushed back to my Git Hub repository (actually, it's more complicated than that - but this is the easy version!)
git push origin master
Will, if no-one else has pushed back before me, push all my committed changes from my local repository up to the master repository on Git Hub. If someone else has already pushed their changes, I need to:
git fetch
git merge
or
git merge origin master
And this is the bit I think needs to be done outside of Toad. Everything local, Toad should be able to manage, everything higher up than local, is nothing to do with Toad.
And, of course, it's not always as simple as the above! :wink:
HTH
-- Cheers,
Norm. [TeamT]

Great summation Norm. It does sound like we need very few changes to work with the local repository from Toad. Letting Git handle the push and merge functions,
seems to make perfect sense.

Thanks for the input as always

Stephen

From: Norm [TeamT] [mailto:bounce-NormTeamT@toadworld.com]

Sent: Monday, July 29, 2013 10:01 AM

To: toadoracle@toadworld.com

Subject: Re: [Toad for Oracle - Discussion Forum] Toad for Oracle 12.0 Team Coding with Git

Re: Toad for Oracle 12.0 Team Coding with Git

Reply by Norm [TeamT]

Afternoon Stephen,

On 29/07/13 14:21, Stephen Beausang wrote:

In the Git scenario, Toad checks in source to the local version of the

repository and performs diffs etc against this. Git handles merges and

commits. Does this sound about right?

While I'm "on a roll" and haven't got anything wrong yet! :wink:

As far as I can see, Toad would do the normal commit and such like,

based on the local repository. I don't see any different between using

got and a local one than using something like Subversion and a

(potentially) remote one.

Toad wouldn't - unless you supplied some more buttons - do the pushes

(and merges) from the local repository (aka branch in Git terms) to the

remote repository.

Git encourages forks, the more the merrier, and unless the user has

privileges to update the master repository, everything happens on the

user's clone/copy which is help locally.

I suspect that the SCC interfaces for Git will only carry out work at

the local level and anything that the user wishes or needs to do "higher

up the food chain" from their local repository, would need to be done

out side Git.

I don't know how much Git you know, but I have a repository at

https://github.com/NormanDunbar/PiSound, for example.

If that was Subversion, any changes committed by Toad would go straight

back there. However, with Git, I need to locally clone the above to a

local copy:

git clone https://github.com/NormanDunbar/PiSound.git

That would create "PiSound" as a new folder, under Git control, with the

contents of the repository inside the folder.

I make changes to the files, add new ones etc, and when done:

git add file_a file_2 ...

Even if these files exists in the (local) repository, they will be

"staged" - in whatever state they currently are - ready for a future commit:

git commit [-m "descriptive text"]

and this will commit - to the local repository - everything currently

staged. So far, there's nothing that Toad cannot handle, I don;t think.

The problem is now, all the changes I have made need to be pushed back

to my Git Hub repository (actually, it's more complicated than that -

but this is the easy version!)

git push origin master

Will, if no-one else has pushed back before me, push all my committed

changes from my local repository up to the master repository on Git Hub.

If someone else has already pushed their changes, I need to:

git fetch

git merge

or

git merge origin master

And this is the bit I think needs to be done outside of Toad. Everything

local, Toad should be able to manage, everything higher up than local,

is nothing to do with Toad.

And, of course, it's not always as simple as the above! :wink:

HTH

--

Cheers,

Norm. [TeamT]

To reply, please reply-all to this email.

Stop receiving emails on this subject.

Or
Unsubscribe from Toad for Oracle - General
notifications altogether.

Toad for Oracle - Discussion Forum

Flag
this post as spam/abuse.

The one additional thing I would like to see is that Toad would automatically detect that a merge has taken place and offer to synchronize the changes for you.

On 29/07/13 15:21, Stephen Beausang wrote:

Great summation Norm. It does sound like we need very few changes to
work with the local repository from Toad. Letting Git handle the push
and merge functions, seems to make perfect sense.
Thanks for the input as always
You might find this helpful, as indeed, might anyone considering using Git. It's an online, free, version of the book Pro Git by Scott Chacon.
I have the dead tree based version, but it's a little out of date now.
Git - Book
HTH
Cheers,
Norm.
-- Cheers,
Norm. [TeamT]

Thanks for sharing Norm.

From: Norm [TeamT] [mailto:bounce-NormTeamT@toadworld.com]

Sent: Monday, July 29, 2013 10:36 AM

To: toadoracle@toadworld.com

Subject: Re: [Toad for Oracle - Discussion Forum] Toad for Oracle 12.0 Team Coding with Git

Re: Toad for Oracle 12.0 Team Coding with Git

Reply by Norm [TeamT]

On 29/07/13 15:21, Stephen Beausang wrote:

Great summation Norm. It does sound like we need very few changes to

work with the local repository from Toad. Letting Git handle the push

and merge functions, seems to make perfect sense.

Thanks for the input as always

You might find this helpful, as indeed, might anyone considering using

Git. It's an online, free, version of the book Pro Git by Scott Chacon.

I have the dead tree based version, but it's a little out of date now.

http://git-scm.com/book

HTH

Cheers,

Norm.

--

Cheers,

Norm. [TeamT]

To reply, please reply-all to this email.

Stop receiving emails on this subject.

Or
Unsubscribe from Toad for Oracle - General
notifications altogether.

Toad for Oracle - Discussion Forum

Flag
this post as spam/abuse.

I’m just finally getting around to testing out a git SCC provider, but I’m not getting it to show up in the list of Version Control Systems in Source Control Options. The help say it is populated by my computer’s registry, and I was wondering if you could provide any guidance on how to get my VCS to show up in Toad.

GIT support is 12.1 – so was your title saying 12.0 wrong or do you need to be using the 12.1 beta

From: michaelj [mailto:bounce-michaelj@toadworld.com]

Sent: Tuesday, September 03, 2013 9:34 AM

To: toadoracle@toadworld.com

Subject: RE: [Toad for Oracle - Discussion Forum] Toad for Oracle 12.0 Team Coding with Git

RE: Toad for Oracle 12.0 Team Coding with Git

Reply by michaelj

I’m just finally getting around to testing out a git SCC provider, but I’m not getting it to show up in the list of Version Control Systems in Source Control Options. The help say it is populated
by my computer’s registry, and I was wondering if you could provide any guidance on how to get my VCS to show up in Toad.

To reply, please reply-all to this email.

Stop receiving emails on this subject.

Or
Unsubscribe from Toad for Oracle - General
notifications altogether.

Toad for Oracle - Discussion Forum

Flag
this post as spam/abuse.

Hi Bert,

I’m downloading the Beta now. Per this thread, I was under the impression that git would not be added until 12.5 in the spring. In the meantime, I was hoping to use a Microsoft SCC API-compliant DLL with Toad which, also per this thread, I believe is possible without native git support. I’ll install the beta and report back on my findings.

12.1 comes out this month sometime – as was announced several times. I said the 13th in my blogs on Toad World, but I think it’s since been changed
to another date this month.

From: michaelj [mailto:bounce-michaelj@toadworld.com]

Sent: Tuesday, September 03, 2013 9:56 AM

To: toadoracle@toadworld.com

Subject: RE: [Toad for Oracle - Discussion Forum] Toad for Oracle 12.0 Team Coding with Git

RE: Toad for Oracle 12.0 Team Coding with Git

Reply by michaelj

Hi Bert,

I’m downloading the Beta now. Per this thread, I was under the impression that git would not be added until 12.5 in the spring. In the meantime, I was hoping to use a Microsoft SCC API-compliant
DLL with Toad which, also per this thread, I believe is possible without native git support. I’ll install the beta and report back on my findings.

To reply, please reply-all to this email.

Stop receiving emails on this subject.

Or
Unsubscribe from Toad for Oracle - General
notifications altogether.

Toad for Oracle - Discussion Forum

Flag
this post as spam/abuse.

Here’s the what’s new from the beta which shows GIT support was added
J

From: Bert Scalzo [mailto:bounce-Bert_Scalzo@toadworld.com]

Sent: Tuesday, September 03, 2013 10:13 AM

To: toadoracle@toadworld.com

Subject: RE: [Toad for Oracle - Discussion Forum] Toad for Oracle 12.0 Team Coding with Git

RE: Toad for Oracle 12.0 Team Coding with Git

Reply by Bert Scalzo

12.1 comes out this month sometime – as was announced several times. I said the 13th in my blogs on Toad World, but I think it’s since been changed
to another date this month.

From: michaelj [mailto:bounce-michaelj@toadworld.com]

Sent: Tuesday, September 03, 2013 9:56 AM

To: toadoracle@toadworld.com

Subject: RE: [Toad for Oracle - Discussion Forum] Toad for Oracle 12.0 Team Coding with Git

RE:
Toad for Oracle 12.0 Team Coding with Git

Reply by michaelj

Hi Bert,

I’m downloading the Beta now. Per this thread, I was under the impression that git would not be added until 12.5 in the spring. In the meantime, I was hoping to use a Microsoft SCC API-compliant
DLL with Toad which, also per this thread, I believe is possible without native git support. I’ll install the beta and report back on my findings.

To reply, please reply-all to this email.

Stop receiving emails on this subject.

Or
Unsubscribe from Toad for Oracle - General
notifications altogether.

Toad for Oracle - Discussion Forum

Flag
this post as spam/abuse.

To reply, please reply-all to this email.

Stop receiving emails on this subject.

Or
Unsubscribe from Toad for Oracle - General
notifications altogether.

Toad for Oracle - Discussion Forum

Flag
this post as spam/abuse.

Hello Michael,

Toad is reading the SCC Provider list from HKEY_LOCAL_MACHINE\Software\SourceCodeControlProvider\InstalledSCCProviders. You will need to be running the 32 bit
version of Toad with a 32 bit dll, and the 64 bit version with a 64 bit dll.

We have also added an interface to the Git command line in Toad Version 12.1, which should be available by the end of the month. This interacts directly with
your local Git Repository. You need to handle merges etc. outside of Toad.

Stephen

From: michaelj [mailto:bounce-michaelj@toadworld.com]

Sent: Tuesday, September 03, 2013 10:33 AM

To: toadoracle@toadworld.com

Subject: RE: [Toad for Oracle - Discussion Forum] Toad for Oracle 12.0 Team Coding with Git

RE: Toad for Oracle 12.0 Team Coding with Git

Reply by michaelj

I’m just finally getting around to testing out a git SCC provider, but I’m not getting it to show up in the list of Version Control Systems in Source Control Options. The help say it is populated
by my computer’s registry, and I was wondering if you could provide any guidance on how to get my VCS to show up in Toad.

To reply, please reply-all to this email.

Stop receiving emails on this subject.

Or
Unsubscribe from Toad for Oracle - General
notifications altogether.

Toad for Oracle - Discussion Forum

Flag
this post as spam/abuse.

I sent my previous response before reading Bert’s comments
J . I sent a notification of the Git update to the beta groups but not to this thread. I was not
sure if the interface would be ready for the 12.1 time line at the time of the original thread., so I did not want to over promise.

Stephen

From: Bert Scalzo [mailto:bounce-Bert_Scalzo@toadworld.com]

Sent: Tuesday, September 03, 2013 11:21 AM

To: toadoracle@toadworld.com

Subject: RE: [Toad for Oracle - Discussion Forum] Toad for Oracle 12.0 Team Coding with Git

RE: Toad for Oracle 12.0 Team Coding with Git

Reply by Bert Scalzo

Here’s the what’s new from the beta which shows GIT support was added
J

From: Bert Scalzo [mailto:bounce-Bert_Scalzo@toadworld.com]

Sent: Tuesday, September 03, 2013 10:13 AM

To: toadoracle@toadworld.com

Subject: RE: [Toad for Oracle - Discussion Forum] Toad for Oracle 12.0 Team Coding with Git

RE:
Toad for Oracle 12.0 Team Coding with Git

Reply by Bert Scalzo

12.1 comes out this month sometime – as was announced several times. I said the 13th in my blogs on Toad World, but I think it’s since been changed
to another date this month.

From: michaelj [mailto:bounce-michaelj@toadworld.com]

Sent: Tuesday, September 03, 2013 9:56 AM

To: toadoracle@toadworld.com

Subject: RE: [Toad for Oracle - Discussion Forum] Toad for Oracle 12.0 Team Coding with Git

RE:
Toad for Oracle 12.0 Team Coding with Git

Reply by michaelj

Hi Bert,

I'm downloading the Beta now. Per this thread, I was under the impression that git would not be added until 12.5 in the spring. In the meantime, I was hoping to use a Microsoft SCC API-compliant
DLL with Toad which, also per this thread, I believe is possible without native git support. I'll install the beta and report back on my findings.

To reply, please reply-all to this email.

Stop receiving
emails
on this subject.

Or
Unsubscribe from Toad for Oracle - General
notifications altogether.

Toad for Oracle - Discussion Forum

Flag
this post as spam/abuse.

To reply, please reply-all to this email.

Stop receiving emails on this subject.

Or
Unsubscribe from Toad for Oracle - General
notifications altogether.

Toad for Oracle - Discussion Forum

Flag
this post as spam/abuse.

To reply, please reply-all to this email.

Stop receiving emails on this subject.

Or
Unsubscribe from Toad for Oracle - General
notifications altogether.

Toad for Oracle - Discussion Forum

Flag
this post as spam/abuse.