Showing posts with label delphisvn. Show all posts
Showing posts with label delphisvn. Show all posts

Friday, July 18, 2008

delphisvn updated to Subversion 1.5

I've updated delphisvn to use Subversion 1.5.
Good news that the official release now finally includes DLLs on Windows.
There's only source code for now, a downloadable release will follow.

Tuesday, November 07, 2006

delphisvn for Delphi 7

Here are some screenshots of delphisvn for Delphi 7 which I'm working on. Some people have asked for it. I rarely use Delphi 7 anymore and I'm doing it just for fun. I expect to release it within a few days.

Update: The release is now available at SourceForge.

Content
Info
Diff

Tuesday, September 26, 2006

delphisvn: updated to Subversion 1.4.0

delphisvn now includes Subversion 1.4.0 client DLL. It can still use the previous (Subversion 1.3.2) client DLL.

Note: Using the Subversion 1.4.0 client library may automatically upgrade your working copy format which will make your working copy directories unusable by pre-1.4.0 clients.
For more information, see Subversion 1.4.0 Release Notes.

I've just upgraded my home computer to use Subversion 1.4.0 and TortoiseSVN 1.4.0.
The speed improvement is amazing! Kudos to the Subversion dev team!

Saturday, July 01, 2006

Blame

A few people have asked me if I plan to include Subversion blame functionality.
Here's a screenshot which shows what I've done:


Running blame may take a long time, especially with a file with a lot of history, so I wrote it to run in a separate thread.

The hint shows the commit log message of the blame line revision.

Thursday, June 22, 2006

delphisvn

I've started to prepare the Subversion stuff I've blogged about here for release as open source.
I've submitted project registration to Sourceforge. The project, if approved, will be called delphisvn and will be released under Mozilla Public License 1.1.

Update: Yay, I've just uploaded the initial release to SourceForge! :-)

Wednesday, June 21, 2006

More Subversion

In the recent few days, I've been able to spare some time for my Subversion IDE plugin again. I've written a dockable IDE form which can be used to perform some actions and view their results. If you're interested in how to write a dockable IDE form, see Corbin's article and example. Who knows, perhaps this plugin might actually become useful one day ;-)
See for yourself, in the screenshots below.

Subversion dockable IDE form 1

Subversion dockable IDE form 2
Here you can see that the form inherits from Delphi's internal TDockableToolbarForm.
The top two menu items are my own: Open will open the file in the IDE, and Show Diff will open its history view and show the differences between the local copy and the base revision.

Subversion dockable IDE form 3
I'm using Mike Lischke's excellent Virtual Treeview and I've noticed it's already also used by the IDE, e.g. in the Project Manager.
The columns can be moved, resized, shown or hidden. Their state is saved as part of your desktop (*.dst files in $(BDS)\bin directory). The treeviews can be sorted by individual columns by clicking on the header.

Subversion dockable IDE form 4
The Options dialog uses Delphi's internal dialog (TOrderedListEditDlg) to edit the list of Subversion working copy directories.

Subversion dockable IDE form 5
Here's a prompt for a commit log message.

Subversion dockable IDE form 6
Finally, the results of the Commit action.

Wednesday, April 05, 2006

Subversion editor view

Subversion editor view

Today I've played with the idea of a new Subversion editor view in the Delphi 2006 IDE.
To add a new editor view to the editor, you have to implement ICustomEditorView interface and register it with a RegisterEditorView call.
You'll need to add EditorViewSupport unit to your uses clause. This unit is only available through designide.dcp; there is no source code. But you can use Code Insight and Help Insight to see what methods are declared in the interface:

TSvnEditorView = class(TInterfacedObject, ICustomEditorView, ICustomEditorFrameView)
private
{ ICustomEditorView }
function GetCanCloneView: Boolean;
function GetCaption: string;
function GetPriority: Integer;
function GetStyle: TEditorViewStyle;
function GetViewIdentifier: string;
procedure Display(const AContext: IInterface; AViewObject: TObject);
function EditAction(const AContext: IInterface; Action: TEditAction; AViewObject: TObject): Boolean;
function GetEditState(const AContext: IInterface; AViewObject: TObject): TEditState;
function Handles(const AContext: IInterface): Boolean;
procedure Hide(const AContext: IInterface; AViewObject: TObject);
procedure ViewClosed(const AContext: IInterface; AViewObject: TObject);

{ ICustomEditorFrameView }
function GetFrameClass: TCustomFrameClass;
end;

Tuesday, February 28, 2006

Subversion in my Delphi IDE

Subversion in my Delphi IDE
Subversion in my Delphi IDE

For over a year, I've been using Subversion version control software to manage my source code, with TortoiseSVN as client on Windows. I find TortoiseSVN extremely helpful in my everyday work. It's implemented as a Windows shell extension (so it's integrated with Windows Explorer) which makes it very comfortable to use.

For the last couple of days, I've been trying to write my own Subversion client and integrate it with my Delphi IDE. The picture above shows my humble first results.

There's Subversion client API but I had to use Microsoft Visual Studio to create a DLL to expose it to Delphi because Windows builds of Subversion link all the relevant code statically.

Then I had to write import units (translation of C headers into Delphi) to be able to use the DLL in Delphi. Subversion uses Apache Portable Runtime library, so I had to translate those headers, too (fortunately, APR on Windows does include DLLs). BTW, I find my own Delphi keyboard macro manager quite useful for translating C into Delphi. :-)

Today I finally used Delphi's new FileHistoryAPI to write a Subversion history provider which is shown in the screenshot. This part seems to be very straightforward.

This pet project of mine is in a very early alpha stage now. My header translations are incomplete and some parts are probably incorrect. Also, I don't know Subversion and APR internals very well yet so it's quite possible that what I'm doing can be done in a much more efficient way.

I plan to work on this project in my free time, extend it bit by bit, and when I have something stable and usable enough I will upload it to Borland's (or the new "DevCo"'s ;-)) CodeCentral.