Posts tagged 'Bitbucket'

22

April 2013

PowerShell function to launch Kiln/BitBucket/Google Code/etc. for current Mercurial repo from command line

A small, but useful, PowerShell function that I have in my PowerShell profile that reads the default repo path from .hg\hgrc and launches it in the default browser. This means after I've done hg push I can just ype kiln to quickly get to the repo page to raise code reviews, etc.

18

August 2012

Frustrations with Git on Windows (and Codeplex) / Suggestions to the Git Devs

During some ranting about Git on Twitter, Brendan Forster suggested I blog the things I would change. I don't have time to write a lot, but I thought I could spam out a list of things based on my first 30 minutes with Git on Windows.

Note: I've just installed GitHub for Windows as a result of these frustrations. I'm not usually a big GUI fan (I use Mercurial from the CLI always), but initial impressions are good. But still, I'm blogging about the CLI for now...

I grabbed a "Portable" version of Git, as I didn't want to soil my machine with something I knew was going to frustrate me. It contained a "git-cmd.bat" file that seemed to get me to a command prompt with git in the path.

Cloning

This one should be easy, right? Even with no knowledge of Git, I knew I could do git clone url. Well, turns out I couldn't do what I was used to doing with Mercurial (though this may be Codeplex's fault). I copy/pasted the URL to my fork of xUnit from the address bar, and hit enter. I got an error: fatal: http://(url) not found: did you run git update-server-info on the server?. WTF? Is this a Codeplex issue?

No, it wasn't. It was a user issue. The clone url for a repository on Codeplex is not the same as the homepage of the project. The last part of the message is rather misleading. I've no idea what update-server-info is, but I'm going to bet that more than 90% of the time that someone encounters this error, they just pasted the wrong url (or typo'd). The text should suggest this, rather than some server-side command that is probably rarely correct.

Suggestion: Re-word this message to be useful for the majority of cases.

Repository Status

In Mercurial, I type hg st to see repository status. It works, because I've typed enough characters that Mercurial knows that I must mean status. I tried git st and was greeted with a big list of commands that I "might have" meant, including even reset! Eh?

Suggestion: Steal Mercurials behaviour, and save keystrokes.

I did a quick count on how many keystrokes it took me to do the same thing (commit an edited file) in Mercurial and Git. It was 18 + the message in Mercurial, and 40 + the message in Git. WTF?

Repository Diff

In Mercurial, I type hg diff to see all of the outstanding changes that will be committed if I call commit. I did the same in Git and ended up stuck in some crazy mode that let me page up/page down, but apparently not exit. I tried Ctrl+C, Break, Escape, Enter and tons of other keys. I had no idea how to quit. After some Googling, I discovered it was :q. Classy. Just like all those other Windows applications.

Suggestion: Spit the diff out directly to the console like Mercurial (especially if it's so short it wouldn't fill the buffer). We already have the ability to scroll!

Suggestion: Don't use shortcut keys that aren't familiar to Windows users on Windows.

Suggestion: If you put the user into a mode that they need to "exit" to continue doing anything, tell them. Show something on screen that says "Press :q to exit"!

Commit

Ok, so I've seen my change. It all looks good. I need to commit it. Diff has already shown me the changes, so it knows what I want. git commit, right? Wrong! This command told me I hadn't added any changes to the staging area. What? Diff just showed me them! Turns out, I have to do "git add" first, so it knows what I want to commit.

Suggestion: Either don't show unstaged(?) changes in diff, just show a message saying there are some, or highlight the unstaged changes in some way.

(I'd almost go as far as ditching this staging crap, but I don't know enough Git to really understand the implications of that)

Commit (part 2)

With my changes staged, I can finally commit (hurray! so far this has taken longer than the 10-line-change I actually made!). So I type git commit. With Mercurial, this would fire up Notepad and let me type my commit message...

With Git, this launched VIM. That's right, VIM. You know, that standard Windows editor that everybody is familiar with? No, exactly. I started typing my commit message and my cursor starting moving all over the place and doing crazy things; I'd clearly mashed my way into executing commands or something... With that fixed, it was time to save and quit. I probably don't need to tell you how this works in Notepad! I tried Ctrl+S, Escape, Enter, Ctrl+C, and all sorts of other stuff. Again, I had to resort to Google. I wanted <ESCAPE>qw. Of course. Just like Microsoft Word; I should've known that! :-/

Suggestion: Use Notepad by default on Windows.

Suggestion: Don't use shortcut keys that aren't familiar to Windows users on Windows.

Suggestion: If you put the user into a mode that they need to "exit" to continue doing anything, tell them. Show something on screen that says "Press <ESCAPE>qw to exit"!

Pushing

With my change (finally) committed, it was time to push to Codeplex. This one isn't really Git's fault, but I spent 5 minutes trying to figure out why I got Authentication Failed messages when I entered my Microsoft Account details. Turns out, I have a Codeplex username/password from years ago which is "linked" to my Microsoft Account, and despite logging in to Codeplex using my Microsoft Account, this doesn't work with Git.

Suggestion: Let users push to Git using the same details they login to the site with! Or at a minimum, change the text that says "same as your website password" to make it more clear this is a Codeplex password, and not the one you probably used to login to the website!

Conclusion

My conclusion after all of this, is that Git is a fuckup on Windows. It's not friendly to Windows users, and it makes things way more complicated than they should be. If Mercurial had been half as complicated as this, I'd have never moved to (and advocated) DVCS.

I don't buy the "it's more complicated because it's more powerful" bullshit. What I was doing today should've been incredibly simple; and in Mercurial, it would have been. Mercurial is also cross-platform, so it's not like this terrible Windows support can be blamed on that.

I'm genuinely surprised that Git has become so popular on Windows (and at Microsoft) when it's such a mess. I can only assume this is down to GitHub doing a significantly better job than sites like BitBucket!

Luckily, it looks like GitHub for Windows might fill the gap between the totally-ridiculously-complicated-CLI and the complicated-and-badly-performing-explorer-humping Tortoise applications. No doubt I'll be tweeting more about that soon ;-)

I'm sure the Git fanboys/Linux Zealots will disagree with all of this and tell me I'm wrong. And that is why Git fails so badly on Windows. The zealots care more about trying to force their way on users rather than trying to build something that is easy to use and fits in with what different people are familiar with.

Git devs: When in Rome, do as the Romans do.

25

July 2011

G+ Notifier 1.3 live, updates posted to Twitter

Version 1.3 of G+ Notifier (for Google+) recently went live. Unfortunately, due to an error with 1.2, you might not be notified about the update by the application unless you leave it running for 12 hours!

Here's some screenshots of the current version:

The notifications window

The balloon notification

Unfortunately, with absolutely no warning, Google suspended the G+ Notifier account I'd created on Google+ to announce updates. I'd asked a number of times whether this was ok, and got no response. As a result, if you want notification of updates without all of my unrelated posts on Google+, the best way is to follow @GPlusNotifier on Twitter. Yeah, really.

Of course, if you don't mind the personal posts, the best place to follow G+ Notifier is my account on Google+.

If you have any ideas and suggestions for G+ Notifier, please submit them to the support site. You can also vote on other peoples suggestions there to influence the things worked on next!

You're also welcome to fork the code and send pull requests. It's a good idea to let me know in advance, just to ensure someone isn't already doing the same thing. There are already a few people (Adam Simmons, The Configurator and Andrew Nurse) contributing to the project!

19

July 2011

G+ Notifier - First Version Live!

The first version of my G+ Notifier is now live, ready to download!

The first version is pretty basic, but it's still incredibly useful. It sits in the notification area and shows how many unread notifications you have (and shows balloons periodically). Double-clicking the icon (or single-clicking a balloon) will launch Google+ in your default browser.

For full info and a download link, visit gplusnotifier.com!

15

July 2011

G+ Notifier - Windows Utility to show notifications from Google+ in the notification area

I recently picked up some domains for my next open source project - G+ Notifier. It's a simple Windows utility that'll sit in the notification area and alert you to notifications from Google+! Similar to my previous Google Wave Notifier, but hopefully Google won't discontinue this service quite so quick!

I'm not sure if I'll be able to launch the application before Google+ gets a public API, but I'll do some investigation over the coming days.

If you want to be kept informed with the progress of the app, please follow G+ Notifier on Google+, I'll post all updates on that account :-)

The website for the application is gplusnotifier.com and will also be updated regularly. Full source code will be hosted on Bitbucket!

« Older posts