once upon Git commands

Shortcuts to some usefull Git commands used in day to day work

//create a branch
git branch <branch_name>

//set us currently on a specific branch
git checkout <branch_name>

//shortcut for all that
git checkout -b <branch_name>

//push branch to origin 
git push -u origin <branch_name>

//delete local branch
git branch -d <branch_name>

//delete branch remotely
git push origin --delete <branch_name>
git push origin :<branch_name>

when a fix has been done on the master branch and you want the changes from that master in your branch. The best approach, in my opinion. after you done all commit in your local “feature, fix…” branch locally (and remotely)

master     : ---A---B---C--------G
                         \        \
branch-bis :              \        H--I---J---K ....
                           \         /
branch     :                D---E---F

//1. set ourselves in the master branch and pull changes locally
git checkout master
git pull

//2. create a new branch locally and optionally remotely
git checkout -b <branch_name_bis>
git push -u origin <branch_name_bis>

//3. merge changes from the original branch we want 
// the master changes merge to,
// and optionaly delete it locally and remotely
git merge <branch_name>
git branch -d <branch_name>
git push origin :<branch_name>

OSS process for open source java projects

This post is a list of my OSS process for open source java projects.

CI

for CI integrations, I use Travis CI, easy to set up and link to github. just add a .travis.yml with the content below and your done (I am using maven and provide a pom.xml). pushing to github will start the build.

language: java
jdk:
- oraclejdk8

Sonatype

I just list the steps. read this for more info : OSSRH Guide

  1. create a sonatype jira account and create a new project ticket. (it takes about two budiness days, but for my project, it was done in one day)
  2. create a pgp signature : dealing with PGP signatures
        1. download gpg from : https://www.gnupg.org/download/ (you’ll find binaries at the bottom of the page)
        2. in a command promp gpg 2–gen-key and answer the questions
        3. gpg2 –list-keys to list your keys
        4. publish your key  gpg2 –keyserver hkp://pool.sks-keyservers.net –send-keys XXXXXXX
  3. update your pom.xml to contain all the requirements
  4. login to https://oss.sonatype.org and get your account key (in your profile, access user account key
  5. add your user account key in your maven settings.xml (so that your password is not hardcoded.
  6. first release with  mvn clean deploy -P release if you have created a release profile in your pom.xml
  7. add a comment on your jira issue to activate the sync process to the Central Repository

Then Create a releases and Snapshots

Deploy Snapshots with

mvn clean deploy

snapshots will be liste here https://oss.sonatype.org/content/repositories/snapshots/

Release With

mvn versions:set -DnewVersion=x.x.x
mvn clean deploy -P release

to see if the release was accepted you can login to here oss.sonatype.org and check if you have sthg in your staging reprositories or searhc on your artifacts, or check here search.maven.org/

install apache benchmarking tool (ab) on windows

  1. download apache binaries from an apache recommended download site (i.e. :apache lounge)
  2. extract the content using zip tool
  3. copy the /bin/ab.exe to a folder of your choice (i.e.: c:\temp)
  4. start a command prompt and run it
ab -n 100 -c 10 http://yourserver/yourapi

or

# content.json contains the json you want to post
# -p means to POST it
# -H adds an Auth header (could be Basic or Token)
# -T sets the Content-Type
# -c is concurrent clients
# -n is the number of requests to run in the test
# -l Accept variable document length (use this for dynamic pages)

ab -p content.json -T application/json -H 'Authorization: Bearer xxxx' -c 10 -n 2000 -l http://myserver/myapi