Monday, 6 February 2017

Git: decide that the changes I have made require a new branch

Okay, so I have cloned my repo and started working on a bug fix / feature.  When I come to wanting to commit the feature figure that I need to create  a feature branch.

So I can create and switch branch by:

git checkout [feature branch name]

git status # this will show the branch that my local sandbox is not pointing to)

git commit -m"my message" [my files]

git push origin [feature branch name]

Friday, 3 February 2017

Transfer svn repos to git

(based on the experience of following: )

required: yum install wget git java git-svn

In the svn repos get the URL of the repository:

: svn info

Get the ids of all users who have committed work to the repository:

svn log --quiet | grep "^r" | awk '{print $3}' | sort | uniq

on the 'transfer machine' setup ssh access /access to your svn repos. For example if using ssh auth create a local user


then create ssh keys for that user:

ssh-keygen -t rsa

and copy the file onto the svn server and cat  >> authorised_keys file

su -

cd ~/home/

download the transfer script:


The migrations:

Test the you have the libs and if not install / upgrade

java -jar ~/svn-migration-scripts.jar verify

if all okay

generate an authors file. I hand crafted mine:

jb1 = Joe Bloggs < >

Then clone the repo (we used the standard trunk / branches/ tags layout):

git svn clone --stdlayout --authors-file=authors.txt svn+ssh:// [your git repo name]

then see what there is totidy up:

cd [your git repo name ]

java -Dfile.encoding=utf-8 -jar ~/svn-migration-scripts.jar clean-git

java -Dfile.encoding=utf-8 -jar ~/svn-migration-scripts.jar clean-git --force

when happy create the repo on bitbucket (if not already)

prepare to send:

git remote add origin https://[git user][gitowner]/[your git repo name].git

git push -u origin --all

bish bash!


For some reason your svn repo does not have tags or branches dirctories. The script will complain eg:

in [your git repo name]/.git/config

add to the section
[svn-remote "svn"]
    branches =
    tags =  

Wednesday, 1 February 2017

sails mocha: Running specific tests in mocha

To avoid running the entire test suite (when writing the tests), you can choose to only run specific tests based on a matching regular expresssion eg:

given snippet of packages file:

    "test": "PORT=9998 NODE_ENV=test mocha -R spec -b --recursive"


npm test --  --grep ManageSessions

will run any of the tests with a describe title matching *ManageSessions*

Monday, 16 January 2017

Windows docker running out of disk space

By default when installing Docker for windows the docker images file will be installed in the path configured in the Hyper-V manager, which for me happened to be in C:\Users\Public\Public Documents\Hyper-V.

To move the image file you need to:

  1. Stop Docker.
  2. Move the images file (MobyLinuxVM.xhdx) to the location you wish for Hyper-V to store the image
  3. Open Hyper-v and in the setting change the default location to save this image
  4. Uninstall and then re-install docker


Friday, 13 January 2017

Wednesday, 11 January 2017

Trouble running selenium script with Python Basic Auth

For pages protected by Basic Auth a little addition needs to be made to the Python script.

Whereas in a browser you can access the restricted pages by providing the username and password:


you can not just put this in the url string of the Python webdriver class before you do you need to load a profile:

profile = webdriver.firefoxPorfile()

and call


so that something like:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
profile = webdriver.FirefoxProfile()
profile.set_preference("network.http.phishy-userpass-length", 255)
driver = webdriver.Firefox(firefox_profile=profile)
assert "Display" in driver.page_source

will work!

Friday, 6 January 2017

Create and manage Docker images on Windows and Docker Hub

To create a docker image on windows we need to install docker!

and start the docker service.

Once this has been done prepare a directory structure, where we will organise our Dockerfiles for each image:


Create a new directory containing a file named 'Dockerfile' for the image you wish to edit then cd to this directory edit the Docker file and once ready build the image:

# docker build -t [yourtag] 

to run the image interactively (cf login to the image) 

# docker run -i -t [yourtag] /bin/bash 

By logging in your can then test the further commands needed to build the image and add these to the docker file and repeat. Note, the images are not intended to be used as virtual machines and only one command can be run at the end (best to leave further commands to be run in the pipeline scripts; eg bitbucket pipeline will log you in 'interactively') 

You can start the Docker image exposing ports, to example, check the output of HTTP pages by mappng a port eg:

# docker run -i -i [yourtag] -p 8080:80 /bin/bash

If you were to start apache (inside the container) on port 80, then you should be able to view the web pages via http://localhost:8080/

Once happy upload to your docker hub account so that the images can be downloaded by tools like the bitbucket pipelines. 

# docker login 
# docker push [yourtag]