ManageAllAdminScriptsWithGit
- The admin scripts are managed by Git
- They should be mounted on all machines managed by quattor in /scripts
Git Workflow
Adding/Modifying the scripts from your computer
- Request an account from git admins
- add your ssh key to your profile
- Do an git clone git@git.iihe.ac.be:iihe-scripts.git to download the content of iihe-scripts locally
If you already have the script directory locally, you can first make sure you are on the master branch with git checkout master , and then pull the possible updates with git pull
If you have made some changes to the master branch (wich you shouldn't!!), use git stash to store the changes and get a vanilla master, and when on the new branch (next step) use git stash apply to apply the changes to the current branch. - Make a new branch from master git checkout -b BranchImWorkingOn. The branch name should reflect what you plan on doing. Never use directly the master branch !!
You can check this worked with git branch -ra that lists local & remote branches. - Make your new scripts or modifications
- If you made new files/directories, prepare them for atomic commit: git add -N myfile
- Select the chunks of code you want to commit: git add -p , (explanations of letters here). Be as small and precise as possible for each commits.
- If you want to revert the adding chunks to the index you just did : git reset -p
- Do the commit for the chunks you selected git commit -m"short message" [-m"long message"]. The long message is optional.
- To list the last commits git log -<NumberOfCommits>
- Last, you need to push the local changes to the remote server : git push origin BranchImWorkingOn
- Make a merge request on the git site:
Summary Of Git Commands
# First git clone git.blahblah git checkout master git pull -p # this updates the local branch taking origin git checkout -b newbranch #or git branch -m oldbranch newbranch # if working on wrong branch git stash # then go to new branch git stash apply git branch -ra ==> lists repo & local branches # Atomic commit (by hunks): git add -N myfile #first prepare file before patchadding git add -p y - indexer cette partie n - ne pas indexer cette partie a - indexer cette partie et toutes celles restantes dans ce fichier d - ne pas indexer cette partie ni aucune de celles restantes dans ce fichier g - sélectionner une partie à voir / - chercher une partie correspondant à la regexp donnée j - laisser cette partie non décidée, voir la prochaine partie non encore décidée J - laisser cette partie non décidée, voir la prochaine partie k - laisser cette partie non décidée, voir la partie non encore décidée précédente K - laisser cette partie non décidée, voir la partie précédente s - couper la partie courante en parties plus petites e - modifier manuellement la partie courante ? - afficher l'aide ==> this add hunks to index, needs git commit -m"" git reset -p ==> revert the adding to index git commit -m"" [-m"long message"] git diff ==> local / index git diff HEAD ==> local / repo git diff --cached ==> index / repo git log -3 ==> lists commit # Pushing git push origin newbranch ==> pushes local branch to repo & creates new repo branch
working with branches
If you want to work with branches, this is the workflow
First, go to https://gitlab.iihe.ac.be. Go to the project you want to fork.
There is a little icon on the page that says 'fork'. Click on it it and follow the instructions.
You will then be taken to the web page of your clone. This is now the page that you need to clone.
Click the little icon with 'clone' to get the exact address.
Now, go to a terminal.
git clone git@gitlab.iihe.ac.be:Olivier/iihe-scripts.git
Notice the username!
You can now work on your own fork. You can crated branches in the fork (see the previous section)
If the remote master changes, you need to synchronize. You can see which forks are available to you:
git remote -v origin git@gitlab.iihe.ac.be:Olivier/iihe-scripts.git (fetch) origin git@gitlab.iihe.ac.be:Olivier/iihe-scripts.git (push)
Adding /scripts to a machine and getting access to it
- You need to mount with nfs (or autofs) the /storage of tesla
- Then create a symlink from /storage_mnt/storage/group/admin/iihe-scripts to /scripts
- Or you can just include the template in config/nfs/storage in your machine, which does all this.
- It is in read-only for non-root users of the admins group, so you cannot make any modifications there.
- If you want access as non-root user, you need to add yourself in freeipa [accessible through tunnel only] to the admins group.
Clean local branches
- removes local branches already commited
git branch --merged for b in $(git branch --merged|grep -v master);do git branch -d $b;done
- removes remote branches already committed
git branch --no-merged git branch -r git remote prune origin # removes remote branches already committed