Elektra
0.8.14
|
git add . git commit -a
make sure to do:
git config --global merge.ff false git config merge.ff false
To list all remote branches use:
git-branch -a
To checkout a remote branch initially use:
git-checkout -b <branchname> origin/<branchname>
Once you have done this, it will be a local branch, too. Following remote branches should exist:
master
This is the development branch. Please try to not work directly on it, but instead you should use feature branches. So the only commits on master should be non-fastforward merges from features branches. Commits on master should always compile and all test cases should pass successfully. (see config option above)
debian
Is the branch to be used to build debian packages. It additionally contains the debian folder. Only debian related commits should be on the debian branch - otherwise it should only contain –no-ff merges from master. (see config option above)
You should always make your own feature branch with:
git-checkout -b <feature-branch-name>
On this branch it is not so important that every commit compiles or all test cases run.
To merge a branch use (no-fastforward):
git-merge --no-ff <branchname>
If you already did some commits, but want them in a branch, you can do:
git-branch foo git reset HEAD^^ (for 2 commits back) git reset origin/master git-ref-log # recover
When doing merge requests our buildserver will build authorized users. If you are not yet authorized following question will be asked (by user markus2330):
Can one of the admins verify if this patch should be build?
Then one of the admins:
If you want any configuration changes, please contact Markus Raab elekt KDB itself. ra@m arkus -raa b.org
Additionally, we added two other scripts, elektra-mount
and elektra-umount
which act as simple wrappers for kdb mount
and kdb umount
. That work identically but are more script friendly.
The full command to use elektra-merge
to perform a three-way merge on a file managed by ucf is: ucf –three-way –threeway-merge-command elektra-merge <New file>=""> <Destination>
Thats it! As described above, elektra-merge
is smart enough to run the whole merge off of the information from that command and utilizes the new kdb remount
command to do so.
Integrating elektra-merge
into a package that already uses ucf is very easy! In postinst
you should have a line similar to: ucf <New file>=""> <Destination>
or perhaps: ucf –three-way <New file>=""> <Destination>
All you must do is in postinst
, when run with the configure
option you must mount the config file to Elektra: kdb elektra-mount <New file>=""> <Mouting destination>=""> <Backend>
Next, you must update the line containing ucf
with the options --three-way
and --threeway-merge-command
like so: ucf –three-way –threeway-merge-command elektra-merge <New file>=""> <Destination>
Then, in your postrm
script, during a purge, you must umount the config file before deleting it: kdb elektra-umount <name>
That's it! With those small changes you can use Elektra to perform automatic three-way merges on any files that your package uses ucf to handle!
Below is a diff representing the changes we made to the samba-common package in order to allow automatic configuration merging for smb.conf
using Elektra. We chose this package because it already uses ucf to handle smb.conf
but it frequently requires users to manually merge changes across versions. Here is the patch showing what we changed:
diff samba_orig/samba-3.6.6/debian/samba-common.postinst samba/samba-3.6.6/debian/samba-common.postinst 92c92,93 < ucf --three-way --debconf-ok "$NEWFILE" "$CONFIG" --- > kdb elektra-mount "$CONFIG" system/samba/smb ini > ucf --three-way --threeway-merge-command elektra-merge --debconf-ok "$NEWFILE" "$CONFIG" Only in samba/samba-3.6.6/debian/: samba-common.postinst~ diff samba_orig/samba-3.6.6/debian/samba-common.postrm samba/samba-3.6.6/debian/samba-common.postrm 4a5 > kdb elektra-umount system/samba/smb
As you can see, all we had to do was add the line to mount smb.conf
during install, update the ucf command to include the new --threeway-merge-command
option, and unmount system/samba/smb
during a purge. It really is that easy!