Grokking git by managing kivitendo


Formal Metadata

Grokking git by managing kivitendo
Alternative Title
Maintaining a oss project with git - kivitendo
Title of Series
Part Number
Number of Parts
Büren, Jan
CC Attribution - NonCommercial 2.0 Germany:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Free and Open Source software Conference (FrOSCon) e.V.
Release Date

Content Metadata

Subject Area
maintaining a oss project with git - kivitendo git for individiual extensions Deploying the free OSS project kivitendo and customising this with the power of git. We will use the power of rebase for long term satisfaction. We grok some basics of git: ······························ Speaker: Jan Büren Event: FrOSCon 2014 by the Free and Open Source Software Conference (FrOSCon) e.V.
Free and Open Source Software Conference
Point (geometry) Word Freeware Open source Doubling the cube Projective plane Counting Quicksort Open set Physical system Form (programming)
Server (computing) Kernel (computing) Open source Torvalds, Linus Code Kernel (computing) Projective plane Open source Line (geometry) Physical system Physical system
Point (geometry) NP-hard Torvalds, Linus Open source Software repository Control flow Backup Physical system
Point (geometry) Standard deviation Slide rule NP-hard Code Projective plane Open source Measurement Area Medical imaging Software repository Backup Game theory Extension (kinesiology) Local ring Physical system
Flow separation Standard deviation Server (computing) Bit rate Lattice (order) Kernel (computing) Software developer Projective plane Local ring Area Physical system Directed graph
Web 2.0 Point (geometry) Dataflow Complex (psychology) Query language Repository (publishing) Kernel (computing) Equation Branch (computer science) Line (geometry) Cartesian coordinate system Logic gate
Point (geometry) Server (computing) Information Open source Projective plane Staff (military) Water vapor Revision control Centralizer and normalizer Computer configuration Hypermedia Energy level Pressure Gibbs-sampling Physical system
Video game Projective plane Maize Cloning
Game controller Series (mathematics) Recurrence relation Service (economics) State of matter Scientific modelling Software developer Projective plane Mathematical analysis Price index Login Branch (computer science) Water vapor Line (geometry) Solid geometry Client (computing) Disk read-and-write head Object (grammar) Revision control Connectivity (graph theory) Cloning Right angle Physical system Cloning
Revision control Decision tree learning Speech synthesis Branch (computer science) Normal (geometry) Disk read-and-write head Maxima and minima Annulus (mathematics)
Point (geometry) Slide rule Pay television Service (economics) Process (computing) Information Projective plane Interior (topology) Translation (relic) Branch (computer science) Theory Writing Message passing Mathematics Configuration space Normal (geometry) Form (programming)
Server (computing) View (database) Expression Branch (computer science) Directory service Template (C++) Web 2.0 Revision control Internetworking Revision control Vertex (graph theory) Quicksort Traffic reporting Flux Physical system Cloning Extension (kinesiology)
Service (economics) Repository (publishing) Mathematics Letterpress printing Source code Speech synthesis Directory service Local ring Template (C++) Template (C++)
Normal (geometry)
Cuboid Right angle Branch (computer science) Directory service Units of measurement Identical particles Inference Area Template (C++)
Office suite Right angle Metadata Cartesian coordinate system
Computer file Interior (topology) 1 (number) Infinity Extension (kinesiology) Subtraction Theory Template (C++)
Message passing Numeral (linguistics) Moment of inertia Source code Identical particles Thomas Kuhn Template (C++) Physical system
Point (geometry) Service (economics) Product (category theory) Presentation of a group View (database) Projective plane Coma Berenices Correlation and dependence Branch (computer science) Insertion loss Twitter Template (C++) Revision control Source code Identical particles Physical system
Root Revision control Bit
Revision control Mathematics Information Projective plane Revision control Open source Data management Number
Revision control Open source Computer file Projective plane System call
Default (computer science) Email Product (category theory) Projective plane Branch (computer science) Client (computing) Mathematics Well-formed formula Cuboid MiniDisc Data management Traffic reporting Form (programming)
Computer file Interior (topology) Perturbation theory Traffic reporting Identity management Physical system Template (C++)
Content (media)
Revision control Software Line (geometry) Function (mathematics) Cartesian coordinate system Fingerprint
Root Correlation and dependence Template (C++) Number Default (computer science)
Revision control Maxima and minima Word Mathematics Real number Projective plane Branch (computer science) Procedural programming Number
Point (geometry) Computer file Branch (computer science) Insertion loss Line (geometry) Measurement Type theory Arithmetic mean Latent heat Network topology Revision control Data conversion Extension (kinesiology) Matching (graph theory) Extension (kinesiology)
Ocean current Area Point (geometry) Identifiability User interface Key (cryptography) State of matter Division (mathematics) Bit Branch (computer science) Disk read-and-write head Revision control Right angle Units of measurement Error message
Point (geometry) Slide rule View (database) Operator (mathematics) Expression Computer worm Extension (kinesiology) Hydraulic jump Units of measurement Physical system Default (computer science)
State of matter Computer file Projective plane Total S.A. Convolution Sign (mathematics) Cache (computing) Root Mathematics Infinite conjugacy class property Computer worm Extension (kinesiology) Units of measurement Traffic reporting Arc (geometry) Units of measurement
Point (geometry) Root Cone penetration test Sic Mathematics Control engineering Branch (computer science) Port scanner Total S.A.
Ocean current Revision control Casting (performing arts) Patch (Unix) State of matter Ring (mathematics) Software developer Branch (computer science) Bit Batch processing
Point (geometry) Software developer Projective plane Branch (computer science) Mereology Disk read-and-write head Disk read-and-write head Maxima and minima Revision control Royal Navy Revision control Cuboid Right angle Text editor Local ring
Image resolution Mathematics Linear regression Revision control File viewer
Scientific modelling Revision control Mathematics Source code Configuration space Diffusion Gamma function Local ring Message passing Traffic reporting Default (computer science) Default (computer science) Patch (Unix) Software developer Interior (topology) Coma Berenices Line (geometry) Maxima and minima Image resolution Commitment scheme Mathematics Revision control Identity management Matching (graph theory) Subtraction
Pay television Finite element method State of matter Revision control Smart card Branch (computer science) Identity management Default (computer science)
Point (geometry) Area Email Trail Projective plane 3 (number) Branch (computer science) Food energy Thomas Kuhn Inclusion map Commitment scheme Analogy Royal Navy Computer cluster Game theory Cycle (graph theory) Units of measurement Game theory
out so the sector is um the rocking get punishing TD 10 or grokking uses slang English for understanding something really by doing it is is is is is this a an unknown English word used and the what we'll do is some In my I might explain something on a on B . 1 of the big picture of JET and then we'll see how we use in our open source project which is named to 10 all and just for although Christian Oliveira so G 10 was a double counting system it is said that implication and it's it's a form of any sort this which was a form of a collection the by no it's not so so really important it's always and important that you can make the bookings and you can create invoices and you can customize and was and that's that's where we use some branching and so on and so forth if you have any questions maybe minus to bear always I or something more like on them logical point just raise your hand and ask questions again great so fast so fiery 1 this area find and knows what is going on looks good I see many Bright Eyes alright and so in British English did as a synonym for it gets that's it's a
good joking start and because of that is that it was written by a line and so once and he said there he is in a goal is to go bust out and you names all his projects of itself and that's why he named the project is idiot and so actually there's a server if you if you don't know it's EU living system for Linux kernel and
the history of all that was there was used a and commercial system named the keeper and then everyone was looking around the of the source and then the OK I mean I cannot use it for free anymore because the cheaper and is not giving it the unlawful freed so I will just stop writing code for the kernel I just write my own versioning system and can indicate enjoy
the well so because it's the it's a synonym for idiots her I saw it fits the because I usually forget stuff I right so back in time and
I need something to keep track of incoming to remind me and to is where most of the time points
URIs are commonly known to toward every kind of versioning system of some kind so som some points the I easier and gets harder in many it's quite hot and to change history and gets because every commit unique that's that's a some major advantage of it and get the main point for me is it doesn't forget anything I do and I can easily find everything I have done what others have done um in a way you can break stuff but it's if you it's easy to not break it if you know some common concepts and the everyone can do anything societies and distributed so to so full back up from I have quite a a quite a good solution for this it's like
uh having having the a linear game you have to true and you have to solve and at some kind you just make safe games to soften and if you write code you have for a multiplayer game and you and get you have every safe game of every player and you can make a copy of every 2nd from every player who who ever played the game so this is quite a portfolio of image to consider and that this this was find is quite a true so and they won't go that deep into the system I will just give you 3 measures ideas where we can use this for a project extensions recall that's just to to get something to grasp so if you just google yet it is better than the Act case because it has all the stuff
you can you can usually just will display set this was my 1st hit I got when I just with wide it is better the slides will be on miles somewhere also known as it was 1 point and more at
beginning workflow just to to give you 1 idea why this is better than any other systems or it can be implemented many workflows you can implement in its and centralized several workflow like and subversion in subversion just have 1 server and you have many occupancy at the meeting when a person who just have to synchronize server and they have to fetch and pull every time to the server and it's a suburb rates of something so it's the weather weather systems is not a sink anymore and the project made a dealer sold them to development that maybe so this is 1 workflow you can use in and you just to give you the idea you can even
define a kernel that that
flows where you have some master like was who can only access to the
repository and he just give someone else the Lloyd Lieutenant the personal um the excess to some more developed policy and here is the quality of equation and he does next query and then uses it will be on the same branch of the users so what is 1 of 1 complex
account you can make you can see that he will upon and then he says the song seems to be better than develop to because it can check into line as the repository directly and so on you can you can define such a workflow with good as well so this is a some theoretical stuff now what I got to the point we use gate for our web based application to attend and we have earlier we have
a project on get and we have release candidates and that have that and stable worsens and there we
managed by a timeline just on the top and we have to the centralized server approach so everyone can commit like 5 just and if something schools or then usually use some other develop unjustly rats at all they can communicate the ISU or whatever so there's all our case all I get to but system to also
if was lost so I have no clue so what on what kind of level of I you into getting is always nodding so you he seems to be that he agrees with me that's fine so that uh anyone using it right now companies OK and you that's the 2 here but can you use it for your own projects or water and contribute to some open source projects on what to do all you know is also the so what we also right OK the use of the and what the world the proton gave it up you know that you only all right so this is what you we want OK we ideas we can have some quiet on the at that point I was told that the answer right now I just give you the information we before we use gibbs we also use of pressure and this was fine for me because abortion was a that with these approaches OK and if it's just in there and so somewhere in on a server in a company that's fine multivariate gives me media far more options that polar my feeling and them you can do some things with did you cannot do with some questions and I will I will show some you know what I will make some stuff rebasing I'm quite sure you cannot do this with some versions of not so constantly occured now for some basic staffs so I
will we're goes into the practical approach you just click our project I prepared some stuff life that C of his works and then go
through the if top on
consumers to OK so now I
just do a simple did clone with solid right access through system no OK this is a pilot project so we have some plifies and so on and so forth and the I not all the comments and everything switches in the major release line which is posted on it out and which is actually the full working the weather parties so the next thing I am I'm analysis so what what do they do next IHH could look like in some fashion you can see the the last commit here and what happens so she is detected can see what kind of major releases of there are 2 users and water branch you can see on 1 branch you are this is actually the current master so we have created the local branch yet of OK everyone follow so far is quite bad example so what the purpose right now if I have client and 4 and I want to do in a project and it's best to start with the developer branch sold we're not there and read the model actually we just install using everything was gets so we just check out the latest stable release and I just knew will branch that OK in the the OK so now I checked all the Release 3 . 0 we are in a somewhat detached state so we end not on their current branch you can't be this I know it's it's it's OK for you because the thing is so we have a Piaget . for this reason we are in attached to we can check with the branch so we need tension release 3 . 3 0 0 here we are and then we just create a new branch with its to work with the this over the
years you this so you know we have great local branch and and what what I want is that the re series in that branch so we you yes this and so we have a new local projects in no no this is my the last guess in the
yes so we know it's not what I would do that once you give me for a 2nd I go back to fly than to be from Poland mocked thank you and the OK so we
are given you branch last commit served from 2012 so that's actually the last commit from the Restrepo endure and so 1 did you if you check on branch that we have we are this indicates where our on this and we Our in the version named takes 3 . 0 0 to make it more clear so I can speech branches right now so OK this is known the branch master we are on that branch we check with good luck
with in 2004 use of the last commit right now 2 is actually the full cloned from the from the top OK yeah OK this a commit message that was a typo in some translation OK I deserve commit hashing this is unique and this a great messages and accommodate on this concealed text OK now we have created our local branch was a specific release so from that point we can start to
do something and you would from for the project on theories and and is quite is actually quite convenient because I now can always cherry from the master if I want to and and whatever kind of firmly vacations so usually so the point here is if I just check the master without creating a branch and I just modify some stuff like modifying 10 days or whatever kind I need for the project this forward I cannot commit them because I don't want them in the major release and wanted to customize templates for in the major on on the top and that's why I created branch everyone with me so far I have some slides as well to OK I changed I already did this because as full information of to 10 or so this config of prominent someone locally so we can see if we change something in know what the real for the process you the yeah note
it's just for for convenience just to see the anyway the permissions on
data so just for the web server and so on and you that actually I just when he fights some stuff you need to modify some of the emissions and so that is working so I already did this because this is
actually to used it at all on me yeah OK we did that we would close OK to kill anyway it's always the same you clone cooked food completely from the top of whatever kind and you see text you continue with the flux value are and then you check out a specific questions and if it if it's text then you can check see and then you check on and branch and can were branch and then you have everything is prepared that you only work annual local branch was out disturbing anyone else even if you commit so that's that's what OK in all that 3 cases if I'm sorts what may happen if I upgrade to an expression like sentence made never conflict always conflict or may not anyone in knows what I'm talking about here of lot all and anyone around the and the Christians it is the no what the case never conflicts there are no no no no you about you modify something in your in your but never actually and it will it will never conflict and yes that's a good and so everything that's not so that in that needs not to be maintained while Russian system is usually that and so my case in custom templates or seems if you have vertices uh you can you you kind answer me that all views and so on and you or you are not really you know you want to take them in into the top um In mock commonly way it's everything which is not under version control in your report means that everything every directory every 5 which is not known to gage how can we make a final to get you use the Internet
I if you use can can check OK you can check if you have anything go about your not a check in with speech that is minus the window and if you just use the spirit minus you can see OK I have heard templates are actually meant 1st column which is not committed to this template diarrhea 1st column there are so many annotation of print templates form for for invoices so this idea customized so users and directory and they are not in the in the main repository so in the talk and that
bucketization invocation was a branch and that specific some very kind
anyway just at some stuff now we have
pdfs is created while I take the latex templates are in the 1st one template directory and there all of the box so more from the get out what we see here this is yeah
so identity self and is lower I would like to customizes for 1st one right now we have something in common when you
1st this I add to the current directory to my local branch and then I
have make he just change on metadata right and whatever this fall OK that'll that'll be enough right now so of and
theory this I like to
visualize my commits right now I you use of when use we I for my is my favorite a song and I use for defi just making extensions used in there so I can visualize what I what I what I did to her what's the difference between the original file and the next ones was easier for my mind so i see ok I changed the this command this template Comónta company to another company so that's fine for me some quite sure where I want to commit that a so now I have make good
commit just I typed in the entire template you and you can see what's new here so this is everything is because I just this and last 1 day for the rest of the identity from the template system so that's fine with me and just numerator literary commits
message OK we have made our
1st commit in all branches you
can see this risk getloc so this is the last comment on various 3 . 0 and here's my 1st comment on that product for this customer project and change the identity of the company and this is the case 1 and it may never conflict because we added a new subdirectory for the template system well in this case for the present trend template system for their loss and this that and conflict so this is not totally safe to be there and has unique commits hash and say that I I escaped the point of view we can replace low on whatever kind of something want like go to the next case she the amenable
conflict with in that case the the next cases it will always conflict can anyone think of a casework what will always conflict a that of a live will always consider if I upgrade to the next question that was a bit tricky any idea I take that ideas I take any any
and all know his wallet complete would have a given the elites pilots there it will always complete no but I just also some now i always complete in this case there's a for example because it wasn't just a to L hot coded information which will change every release like a change shop for example In all cases because they never released making use change Locke was complete and that's version 5 just like in and at the end version we have that's the case also 1 of those of 3 . 0 0 0 and I'll just making new Western you this will always complete because it's it's a best practice is always to set up a new question number if I take a new release and defined we find that follicle always always conflict is it to this to this case we depend on the project on how you of will watch over management is doing and um yucky and began to connects cases it may conflict what that yeah all ethics exactly all so all
projects also size I we which already there and I I In that case many of us or k around I get to that point and that seems to do so yet we do that not universal worship
I continuously . 0 0 because my customer wants to have his own project version I just add all my 1st call OK it's done you can see was get started so way that I have
changed 5 0 commit that file to commit Don . check my lock OK this was the next commit this could we always conflict if I to work and Freebase or emerging against an extended version and along with some modifications in source
see I think that brought on customers what he's OK so here are defaults the check boxes right now I want to say to the form and males so so anyway my customer
might think is called all I hate this report because anywhere rightly going next always the telephone and e-mail and no 1 is feeling that data is in our case please make a change to the top and to remove those check books we don't because we only have the necessary we have the customer or client was also can be that and and sometimes it's like OK everyone else in the world troops have my opinion on this kind of check boxes on this kind of report and to leave cases then OK but I I have the project branch on customer branch and that kind of thing OK OK for you in the product bunch of disabled the check boxes that's fine I have further commit that's OK and I have a branch and and it's it's 5 formula poses the sheet cheaper solution to to had to get a project going it's some kind of managing and support and will do that it
this also templates 5 1 this is the file maintained by did so to listen to ride this is a hot templates system meant so of were so and then report and the rest of the imagery and I put here and this is the
next year I'll just phone OK I've got a multitude I just removed the checked and see if I to the right file OK so it's
gone OK of my content
and so so on I actually made n locally check OK I usually use to get this to see you know why and it's OK now you can see much congested always OK
that line is changed context for and and the
right if you scroll was is a case in the hole in the original version here for checked active and on my modification it's gone this is just for me I you always use get to be double safer I'll leave and at the kind of software I want to edit and modify and also blue and check on them and step that applications if I'm just going to for the pointed at the graphical output from you know I have
that number of also committed to and so all my comments on
their 3 cases that never conflict may conflict and who definitely conflict in OK
what what will happen next so the project is done so the
minimum because my nation is over so what what we're probably the next thing to have was already checked in all the OK let's say I'm on the on where the customer is you bring this all it's locally checked in so it's online it's all online projects over and it's it's checked in on that and the customers happy you don't see those checkbooks there he has his own version number can where we also some more identical stuff like changing the war and so on and so forth that that so what will happen next that's no yet but I don't know no it's so I just keep those changes in my local branch so we I don't want that I can I can also push this branch to be top but it doesn't make sense of word with its so that makes sense for the customer projects if it's if it's not real it's if it's not a real benefits for the project in general I don't want to push this to back to get yeah OK yeah usually is something yes no yeah and this summer we'll be back so this is so this is this is fine if I want to we have owing to back up this it is not just on 1 note among several it will be but this is another case so that's that's fine that's fine for the customer and find for me really backed up in the in the normal back-up the procedure and that's fine is yes a very well he will work with the project and after 1 or 2 years he will find all OK there's always new release and the new release has feature X and the and that cool feature and really needs and Washington and so on so you you so what we what we do now lights
OK I just realized the as this was the last comment on 3 . 2 0 0 this is a 2012 committee from the Release 3 . 0 and the yellow commits on my branches branch commits and the 2 years later
I completely political extensions and the customer wants operative into the conversion properly I have
a project get and what I do or what I always do it and find very convenient and it I don't know if you that I base against master and this is line I checked all the master I make a pull from the tree tops and then I check out there and go and sit back to my local branch and then base against losses so did anyone done this before providing yeah that's what is you are usually much all I did in my match with drift 0 yeah OK measures IEEE algae that says if you know the meaning that may not basing its and I with this associated with last year that if you match it ends up in subversion of the circadian much at a specific point of time back in history so after the match is done you can what the you cannot ever see what what was the original intent of the common because it will it is there some more modification of the same file it will it will move back in time to like 1 and logical type of film that things will go deeper in the ground you have to take the a harder and harder and if you if you re based the concept is there's a different because it although the branch will be put on
the hat on the current head QI rebasing against as a
major advantage here and so right
now if you much less in let's say was into it wasn't columns 12 so I do make
errors and a matching up the current version so I have to integrate this committee my branching into interconversion and then every you everything so goes on top of that of that state was and if you a base it's the other way around so he skips all the the branch get and then just goes to the 2014 Washington current Russian and then he writes he revived the my own branch against the current head so this means all those comments will be put on top and 6 exactly leader that point of time I'm right this is a major advantage so that keys will be always the shit identify areas to bear a mile original commits also the so if the if it conflicts it's usually easier to work and see where the conflict and it's a bit and more
convenient graphical point of view if you have some graphical stuff of your and fishing system you just say OK this is all
these all the customers this extension they replayed after the after the and operator when the expression we we see that in practice right now OK anyone remembers
the commands I had on the slide so what was the 1st thing to to do this and the there was 1 step before so we have attached this
project for 2 years so 1st
each acknowledged master and we make a whole against a current and report so the losers so now we get all the comments from
2 years ago and the major release we have them in Moscow with comments and unit caches are kept at the the 1st step
and although if the customer Russian all new to this you will be able to work anyway so he's you use
rational in a home undefined state with all the customer extensions and we have a current review of the convolution you can see we are
on last the beginning of the check back through the branch here we are still in the 3 points the role of Russian and things fine but we just pulled the master to get all the commits and all the actual
changes lot from the last 2 years
talking next step and which 1 yeah OK across common OK yeah this the what we're probably happen
yeah 3 cases yeah that is 1 so we may get to when we
end with them so why for is algae and you can do this also you can but this with this is a bit difficult we have if I do against the actual current release yeah I make a new branch with the reasoning and then I can and I that I can base against which reuse what now what yeah you're definitely right yeah that's no and you would just to cut it short so he would do in and a step then you would create a new branch within current questioning just to be sure all but sometimes unnecessary depends on the state of developers and try that brought him so developers find so we checked that with a cast mired base against Martha with the country will OK and that's visual this you have a
conflict and we'll use so much to OK so what what's here
what that will see an the
current head so this a developer version so we the western part is at 3 . 1 0 and still this is the box we can see on the
modification on the branch this is the first one Russian right here and we can see what was here before we do that modification and on that walks on my editor we can and we we will decide what to do With this conflict so any ideas of what to do this is was not a great here this means there is so here's the and this final this with the command mean there is a conflict right now at that point and the answer OK yes your project is now and 3 . 1
customer we have been released only made for you great so every everyone with me so far given the that's right on the variables or change that once before the change and that's how I get me integrate and assigned to OK
well he said but but but but says get regression
models must continue it has talking and that's it yes sometimes you have to remember that the new apparatuses already let's see what's that's OK in that case we didn't need that sometimes you have to do this I'm not quite sure what when
and this is the case may be it's on because of 1 line but right now and this is the the status developer commit and you can see it's not a match with he did that all comments after after the last pulled muscle coming you no conflict yeah because it was conflict-free requests changed to foster with was a case where it we had to be a conflict and the default reporters still working and so there was no change in that in that Washington can OK just
stare at a reminder we checked of
mastery put the can actually have to always pulled and here we can do another branch with the with the release tag whatever and
then we check on the local branch and then we're a base against last all this to the current state of whatever kind of comment when we when we want to we and the free market this is not if you want to use provisional into or you can use get K users not known closes the Opel from became can she also
can see the here's the latest comments
with with rule-based and yeah and you can see here is a master of we need that that wasn't the point of commit where we we base again and you can see we have free commits which I did he ifyou and added to those branch yeah so we have
here in just to be complete so minded conspicuous which was not explained in this like them all this is the honesty just could differ you can complete or whatever and 2 we want to have and you need to have some names and that's just through to commit with Kate anyway and to and you based on an tutorial workers playing I found right now and short time was that 1 he had to some energy was so using such games and it's a multiplayer game and 1 place at the wrong 1 and get all the safe games from everyone was was quite nice analogy so if you want to dig deeper into that you that and if you mn whenever you do with it at least some tiny custom modifications for a project and just take those half hour extra time to make branch and to commit incest branch and in this case the skates and then you have further save versus local for brain cycles here 2 years later if you cannot remember what I changed for this customer or at that point of time great so that's the that's the area the woman in major point of yeah than thanks you thanks for your time and questions


  998 ms - page object


AV-Portal 3.10.1 (444c3c2f7be8b8a4b766f225e37189cd309f0d7f)