Jack Repenning

About Jack Repenning

Tips on Git: De-fanging ‘Git Push’

Ever had Git commit a branch you didn’t intend? % git co branch-1 % (workee workee workee) % (interrupt) % git ci -am”Half the change of the primary task” % git co branch-2 % (workee workee workee) % git ci -am”The whole change of the interrupt % git push babble babble babble 9e7f6d7..35935af branch-1 -> branch-1 ccb352f..66c8c36 branch-2 -> branch-2 Oh no! Not branch1! It’s not finished yet!!! What Git has just done is technically called “push by matching”: any branches in your repo that have names matching branches in the origin repo get pushed. The confusing thing here is …

Read More »

Building Open-Source Software Engineering Tools

Do you know about CollabNet’s Tigris.Org community?  The birth-place of Subversion and home of many Subversion client tools, Tigris also hosts the communities behind the popular UML design tool ArgoUML, the Perl style and correctness tool Perlcritic, the PHP object-relational database Lawngnome, the highly customizable bug tracker Scarab, process tools like ReadySET, and lots more. Named for the great river Tigris, birthplace of civilizations and stories, the Tigris site provides fertile, well-watered soil for a new kind of community. A Tigris project collects together the mail lists, wiki, bug tracking, document sharing and storage, and source code — a well-equipped and …

Read More »

Making the Most of your Activity Stream

What is it? Your Activity Stream records significant events, like version control changes, in a real-time historical record that lets you search and filter among entries, and correlate entries of different types, as well as providing hyperlinks to commit details, user profiles, project dashboards, and other related data.  You can find the Activity Stream display on the Dashboard, as well as the specific pages for projects, services, and user profiles.  The latter displays automatically limit response to the ones relevant to that page, but other than that all Activity Stream displays are similar. If you don’t see the Activity Stream …

Read More »

Extending CloudForge With the CloudForge REST API

CloudForge REST API Did you know that you can do many CloudForge administrative operations using a REST API? Actions like creating new user accounts and projects, adding services to projects, and even monitoring project activity can be integrated into your process tools using this simple, secure API. One popular example: suppose you want to integrate your CloudForge accounts with your internal corporate user management, so that when an employee leaves the company, their account in CloudForge can be deleted at the same time as their account in your own systems. Without an API, this requires someone to log into CloudForge …

Read More »

Deconstructing a Branch — Rolling Up Our Sleeves, Battling the Beast (Part 5 of 5)

This is the final installment in the continuing saga of cleaning up the feature branch I put through the Osterizer. In previous episodes, we’ve decided a GUI tool would be handy, surveyed some available GUI tools, and explored the power and quirks of our likely choice. It’s now time to roll up our sleeves and get some work done! As I’ve mentioned before, this will be a detailed, step-by-step walk through of some actual (artificial) data. You really might want to download the repo I’lll be using, so you can play along.  Here’s the repo, and here’s its GPG signature. The Set-Up …

Read More »

Deconstructing a Git Branch — A Guided Tour (Part 4 of 5)

Today, we continue the saga of Deconstructing a Branch in Git. Last time out, I took a survey of graphical tools, and concluded that the only one likely to help in this particular situation is gitk. As I summarized, Unfortunately, though it’s very powerful, it’s also quite overwhelming: there’s a lot of power here, but more investment in making it available than making it accessible. So before I dove into the actual work, I spent some time figuring out how to find my way around. Also, as mentioned last week, these examples will use a repository full of nothing in …

Read More »

Deconstructing a Git Branch — The Tools…Seriously? (Part 3 of 5)

As I confessed last time around, I mismanaged some Git-branch evolution and had to reconstruct what the branch would have looked like, if I wasn’t an idiot. I tried to fix things up with the Git command-line, which I’m sure can be done … but I sure couldn’t find all the pieces to do the job. So I turned to GUI tools, hoping for extra insight. After all, Git has GUI tools, right? I read that somewhere, recently. What I found was that many of the Git GUI tools are designed to provide GUI assistance to the basic, common operations. …

Read More »

Deconstructing a Git Branch — Tools Fail (Part 2 of 5)

In our last episode, I confessed to making an unholy mess of a branch snarl by ignoring standard software process ‘Best Practices’, and running head-on into an especially concentrated cluster of all those things that make those Practices the Best ones. But, hey, we’re using Git! Git is great! Git is all about branches! No worries, right? Starting Simple – Rebase So, I hear there’s a rebase command in Git, that allows you to “edit history” so it looks like what it should have looked like. Maybe that’s what I want? Let’s ask Google: google: git rebase edit history OK, …

Read More »

Deconstructing a Branch with Git – Part 1 of 5

Everyone knows — it’s a basic Best Practice! — that you should do parallel development on parallel branches, not cascaded branches: base them both on trunk or master or whatever your favorite version control system calls it. Don’t branch one off the other, lest plans change, release schedules diverge, and you suddenly have to disentangle them. Right? You knew that. I knew that. Everyone knows that. You know where this is going. <Insert favorite snarky gallows-humor quip> The Problem — With Pictures During development of our new CloudForge product, we also developed an API for our partners to use to …

Read More »

Subversion or Git? Decisions, decisions ….

Are you facing a difficult choice between version control systems? Are you having trouble sorting out the alternatives? Are you bewildered by all the opinions you find on Google? Let’s see if I can help sort this all out. CollabNet (the original stewards of the Subversion project) provides both Subversion and Git, either through our enterprise TeamForge product or through our CloudForge Platform. We think there’s a place in the universe for each. Here’s how to find yourself in that universe.     The short form Here are some specific recommendations. If you want to stop reading at the end …

Read More »