Friday, September 30, 2011

Migrating from Git to Svn and Svn to Git

The following steps will migrate to and from GIT while maintaining all commit history.

svn2git# First, create a new GIT Repo
# Then, do the following
git svn init <svnUrl>/<svnRepoName>
cd <svnRepoName>
git svn fetch
git svn rebase
git remote add new <user>@<gitRepo>
git push new master

git2svn# First, create a new SVN Repo (with at least 1 file in it)
# Then, do the following
git svn clone <svnUrl>/<svnRepoName>
cd <svnRepoName>
git remote add old <gitRepo>
git fetch old
git checkout -b old_master old/master
git rebase --onto master --root
git svn dcommit
Read More »

Wednesday, September 28, 2011

SVN Migrate folder to new repository root

Since I've been asked about Subversion's "svnsync" command more than once, here is a copy of my post on stackoverflow.

The svnsync option worked for me with subversion 1.5.3.
Here is a Windows batch script to accomplish this:
SET OLD_REPO_URL=https://old-project-repo/my-project
SET NEW_REPO_URL=C:/Repositories/new-project-repo
SET NEW_REPO_FILE_PATH=C:\Repositories\new-project-repo

svnadmin create %NEW_REPO_FILE_PATH%
echo exit 0 > %NEW_REPO_FILE_PATH%\hooks\pre-revprop-change.bat

svnsync init file:///%NEW_REPO_URL% %OLD_REPO_URL%
svnsync sync file:///%NEW_REPO_URL%
Note: You will not be able to browse the new repository until the sync is finished.
Read More »

Tuesday, September 6, 2011

Explaining 'Agile Coach' in Social Circles

It was hard enough for me to explain my job before, when I was an IT Consultant. Half the time I'd say things like: "Well there's my software development job for the client... Then there's the company I work for..."
Now that I am an Agile Coach, it's even harder to explain, and I see people tend to shutdown when I try - i.e. it's too fuzzy and unfamiliar for them to ask any follow-up questions. As a result, sometimes I just resort to saying, "I'm a Software Developer." Problem is, that implies two things, neither of which are true in my case:
  1. That I am a computer programmer writing software.
  2. That I sit in a cubicle all day, getting my "Nerd" on, and not interacting with people.


Here's my latest thought on Explaining 'What I do as an Agile Coach' to Social Circles (i.e. non-IT people at parties, family events, etc.)
  1. I teach IT people on Teamwork.
    - It used to be people sat in front of their computers all day in offices or cubicles (like "Office Space"). Now we stick teams of 10 in a room and make them collaborate and design together. Software Development is a very creative process so we often have toys and colorful rooms like an Art Studio.
  2. I teach IT people about being Transparent. (and honest and realistic)
    - Since we're typically a bunch of engineers - not the most social animals - we are not very good at communicating with the business and users of the applications about issues and progress of their new features of their website or mobile app.
    - So it sounds like Kindergarten, but we write the features on index cards or post-its and stick 'em on a wall. And we talk about them everyday and have demos on work-in-progress frequently with anyone who cares.
    - There are people committing to deadlines and I try to ensure that expectations are realistic given the challenges of creating something that's never been done before.
  3. I teach Managers to Trust.
    - As you can imagine, the transparency thing only works if you have upper management bought-in and trusting that their people are doing the best they can given the circumstances.
    - So instead of managers telling the people under them what to do, I teach them about "servant leadership" which completely reverses their thinking.
    - Instead of command and control, micro-management, I coach the Managers into asking the Teams things like, "What do you need from me today to be successful?" or "How can I help you?". It flips the organization upside-down and the Team begins to feel empowered to work better. They have the full support of their Managers to unblock issues for them and now everyone can work toward the same, common goal of creating a better - and more profitable - company.
Read More »