|
|

|
|
A TextFileSplitter user commented that the UI is too big on his screen. I added accelerators to the Split! and Get Command Line buttons. Not sure why I didn't add these before. NEW - Added accelerator to the Split! button. It is ALT-S.
NEW - Added accelerator to the Get Command Line button. It is ALT-G. You can download it HERE.
I finally tracked down and quashed some bugs that were happening on Windows XP. PainlessSVN Console 1.2.0 is now up for download. This version includes Subversion 1.6.15 as part of the installation package. Download it here.
Just wanted to update everybody on PainlessSVN Console. I have updated the install script to include the Subversion 1.6.15, instead of 1.6.13. This version of PainlessSVN is actually code complete. I'm working on ironing out some issues with the install script. 
I got tired of having to hand-copy file paths into the InnoSetup script for PainlessSVN. I'm specifically referring to the Subversion server files. There's something like 278 files, that are in nested folders. I had just finished pasting in all the paths for Subversion 1.6.13, when 1.6.15 was released and I was seriously dreading repeating this whole excersise again. I needed something that would recurse through both files and folders. It's easy doing one or the other, but not both at the same time (at least for me). I spent about 3 hours last night working on this. The good thing about this code is that I needed something similar for the new DeleteDevCrumbs utility that I'm polishing for release. As it currently stands, this code will create a list of files from the directory that is passed in through a command-line argument, scan the child directories, and create a text file for you. The file will contain a ready made list that can be pasted right in the [Files] section of an InnoSetup script. Here's a console app with this code: using System.Collections.Generic; using System.IO; namespace ScanFilesTest
{
class Program
{
private static List<string> _tree = new List<string>();
static void Main(string[] args)
{
string rootDirectory = args[0];
var rootInfo = new DirectoryInfo(rootDirectory);
if (!rootInfo.Exists)
{
throw new DirectoryNotFoundException(string.Format("{0} does not exist!", rootInfo.FullName));
}
FileInfo[] files = rootInfo.GetFiles();
if (files.Length > 0)
{
ScanFolders(files);
}
else
{
DirectoryInfo[] folders = rootInfo.GetDirectories();
ScanFolders(folders);
}
TextWriter subversionList = new StreamWriter("D:\\subversionfilelist.txt");
foreach (var file in _tree)
{
var currInfo = new FileInfo(file);
string currDir = currInfo.FullName.Replace(rootDirectory, string.Empty);
subversionList.WriteLine(string.Format("Source: {0}; DestDir: {{pf}}\\Subversion{1}; Components: Subversion", file, currDir));
subversionList.Flush();
}
subversionList.Close();
}
private static void ScanFolders(FileInfo[] files)
{
foreach (var file in files)
{
if (file != null && !string.IsNullOrEmpty(file.FullName))
{
_tree.Add(file.FullName);
}
}
if (files.Length > 0)
{
string root = files[0].DirectoryName;
var rootInfo = new DirectoryInfo(root);
DirectoryInfo[] folders = rootInfo.GetDirectories();
if (folders.Length > 0)
{
ScanFolders(folders);
}
}
}
private static void ScanFolders(IEnumerable<DirectoryInfo> folders)
{
foreach (var folder in folders)
{
if (folder.GetFiles().Length > 0)
{
ScanFolders(folder.GetFiles());
}
else
{
if (folder.GetDirectories().Length > 0)
{
ScanFolders(folder.GetDirectories());
}
else
{
if (folder != null && !string.IsNullOrEmpty(folder.FullName))
{
_tree.Add(folder.FullName);
}
}
}
}
}
}
}
I've seen other tech companies do a New Year's letter, and I'm trying to adopt this in my workflow. So here's a roadmap that I set for myself for 2011: TextFileSplitter 3
The MEF support is half-baked, so I want to upgrade everything to .NET 4.0. This version of .NET has a native implementation of MEF, so that I don't have to resort to the downgraded assembly that was created for .NET 3.5.
I also want to flush out the SDK. It needs a lot of love, and I now have the energy to get this done.
PainlessSVN 2.0
I want to see if I can get everything moved to .NET 4.0, as this version of the framework has a LOT of improvements. I'm hampered by .NET 2.0 right now, and I can't do a lot of things that I want. Moving to the latest version of .NET will let me implement some needed functionality without the need to resort to hacks.
DeleteDevCrumbs
This is a new utility that I created to help me with my builds. I found that I have to add a LOT of files, just to get my build script to get the correct files. One of the things that really annoys me is that there's a lot of temporary files from Visual Studio and Subversion in all my projects. On top of that, ReSharper and my other IDE plugins, also add their own temporary files.
This utility will let you delete all of these nuisance files in one go. For example, you could copy the whole project folder to a temporary folder, and tell DeleteDevCrumbs to delete the bin and obj directories. This little gem will go through all the subdirectories and nuke all of these things. It will also take care of the .svn folders, if you tell it to.
I'm in the process of polishing this for general comsumption.
PainlessSVN Backup
This is an application that has been on the back-burner for a long time. This will be similar to SVN Backup Widget. This is in the design stages, so not much has been done yet. I'm planning on using WPF for the GUI. My hope is that I can design it in such a way, that it can be used as a plugin for the new version of PainlessSVN. Not really sure when this will be done. Anyways, here's to a fruitful 2011!
I have been sort of avoiding the NoSQL document databases for a while. I tend to be need driven, and I just ran into a big speed bump with EAV (Entity-Attribute-Value) data for WheelMUD, my big open source project. I did some research and found that RavenDB is a native .NET NoSQL engine. I downloaded it and had it going in a few minutes. The first thing that struck me was that there was no desktop UI to manage the documents. I didn't that deter me, so I used the web UI instead. Luckily, RavenDB comes with a built-in web server. I was interested in the embbeded mode, so I tackled that first. I resorted to moving the database to where the server was, so that I could browse the document store. I had to do this every time I made a change, as I didn't want to bother to code the document database to the server directory. This was a throw-away app in any case. I got as far as storing documents, and got stuck on creating indices for queriying the stored documents. The indices are just LINQ queries. I'm not sure about the other NoSQL implementations, but RavenDB stores the documents as JSON files. I created a blog post on WheelMUD's site, with code and technical details. The biggest tip that I can give people is to leave any relational database experience at the door. It will hinder you when dealing with NoSQL databases/document stores.
I had a large company that wanted to buy a copy of PainlessSVN. They have a very convoluted buying process. I was down to the last step, which was to send an invoice. Here's where things broke down... I had initiated a purchase order process through FastSpring. Unfortunately, this customers pays using SWIFT transfers, which FastSpring doesn't handle at this time. This meant that the purchase order and invoices that I had sent would not work for this customer. They needed an invoice that was initiated from SystemWidgets, instead of FastSpring. Enter Zoho Apps. I had created an account with them early this year, but had totally forgotten about it. I signed up for their free account. I went and looked, and lo and behold, they now have an invoicing app. I setup the info in about 2 minutes. Then took me about another 2 minutes to setup the invoice. That was mostly because I had to hunt down the billing address for the customer, and also enter information on PainlessSVN itself. So total time from login to sent invoice: 4 minutes. I'm impressed! Zoho Apps has a bunch other web applications that I didn't notice before. Time to explore!
Yup, you read that right. I'm creating a "Console" edition of PainlessSVN that will be free. I'm in the process of removing some functionality. I got the hardest stuff out of the way. The last thing I need to work on before release is the install script. This InnoSetup script will include Subversion as well. 
I just wanted to let everybody know what I'm working on right now. I'm in the process of finishing the next version of PainlessSVN. Here's a screenshot of the options that you will get with the next download: 
That's right, I'm including Subversion itself with PainlessSVN. I found a new distribution that contains everything svnserve needs without apache. The new distro's home page is over here: http://alagazam.net/ I'm frankly very tired of the websites that make you sign up to get at the Subversion binaries. And also what's up with the giant 80+ meg Subversion download? Just smile, if you know who I'm talking about. I also have an InnoSetup script that will install Trac and Python. I will probably create several setup packages after I get done pushing this out. I'm thinking of: - PainlessSVN only
- PainlessSVN and Subversion
- PainlessSVN, Subversion, Trac, and Python
The hardest part is always setting these things up. One I get these set up, I'll need to add them to my FinalBuilder scripts.
| |
|
|