Hello,

I used GBP a while without any issues as the structure was pretty simple, which means, we had only the master branch and one Debian version.

Now we switched our procedure and working only on a develop branch and merge from develop into main/master branch. That was the first part, were I run into trouble .. as not all changes where inside the Debian packages. The next problem was, that we want to create Debian packages for different version, like Stretch / Buster / ....

Because of the debian/changelog and also some Debian files inside debian/ I had always merge conflics ...

So I started to create for every Debian version a own branch, starting from the latest master and added all debian/ files

So we have have 4 branches:
-> master
   - For building releases / packages
   - Does not contain any Debian files
-> develop
  - Develoment. All changes were merged later to master
  - Does not contain any Debian files
-> debian/stretch
  - Does contain Debian files
-> debian/buster
  - Does contain Debian files

Everything is done via Gitlab pipelines and using custom "helper" script, which holds most commands and has a switch for snapshots and releases ...

This script .. works from the build view fine .. but we saw .. that often merges / changes are not included ...

Below is the helper script .. which was extended / changed very often ...

But it seems .. I'm doing it more or less wrong .. and tried so many things ... :-)

* What I expecting (example for Debian Stretch)
  - Clone the master branch (done via Gitlab)
  - Checkout debian/stretch
- Merge **all** changes from origin/master into the debian/branch and **overwrite all**, as only debian/ files are maintained inside the branch - Build packages either for release (and than start a new version number, or snapshot)


I tried first git merge .. but the changes from merges like feature/foo -> develop -> master was not included So switched to rebase .. with -Xtheirs origin/master .. and saw .. that again the latest merge from develop -> master was not there ..

I tried from the console .. like:

git clone git@foo:/project
cd project
git checkout debian/stretch
git rebase -Xtheirs origin/master
git pull
gbp import-ref -uHEAD
....

and also .. my changes (in this case gitlab/build_script.sh) is not on the branch debian/stretch/

So, here comes the point .. where I think .. I'm doing it all wrong :-)

I have no idea .. how to to get it working right .. to create Debian packages for different versions and always include all changes from master ...

I know .. it is maybe a Git usage problem .. than a GBP .. But I think .. the origin problem is to use GBP on the correct way and I hope, that someone can help me :-)



================================================
#!/bin/bash -x

GIT_VERSION=$(git describe --tags)
echo "Git version is $GIT_VERSION"

case $1 in

  snapshot)
    echo "Prepare Git repo for ${DEBIAN_VERSION} snapshot"

    git checkout debian/${DEBIAN_VERSION}
    git pull origin debian/${DEBIAN_VERSION}
    #git merge -s ours origin/master
    git rebase -Xtheirs origin/master
    gbp import-ref -uHEAD
    mk-build-deps --install --remove --tool="$TOOL_ARGS" debian/control
DEB_VERSION=$(dpkg-parsechangelog --count 1 -S version | awk -F '+' '{print $1}') gbp buildpackage --git-upstream-tag='v%(version)s' --git-upstream-branch="$CI_COMMIT_REF_NAME" --git-ignore-branch --git-upstream-tree=BRANCH --git-ignore-new --build=all -us -uc -rfakeroot --lintian-opts profile debian
    gbp tag --debian-tag='v%(version)s' --ignore-new --retag
    git pull --no-edit
    gbp dch --commit --snapshot --since=HEAD
gbp push --debian-branch=debian/${DEBIAN_VERSION} git@$CI_SERVER_HOST:$CI_PROJECT_PATH.git
    git push --follow-tags git@$CI_SERVER_HOST:$CI_PROJECT_PATH.git
    ;;

  release)
    echo "Prepare Git repo for ${DEBIAN_VERSION} release"
    git checkout debian/${DEBIAN_VERSION}
CHANGELOG_VERSION=$(dpkg-parsechangelog --count 1 -S version | awk -F '+' '{print $1}' | cut -d'~' -f1)
    TYPE=${2:-2}

    function increment_version() {
      local VERSION="$1"
      local PLACE="$2"

      IFS='.' read -r -a a <<<"$VERSION"
      ((a[PLACE]++))
      echo "${a[0]}.${a[1]}.${a[2]}"
    }

    export DEB_VERSION="$(increment_version $CHANGELOG_VERSION $TYPE)"
    echo "New version is"  $DEB_VERSION
    git checkout debian/${DEBIAN_VERSION}
    git pull origin debian/${DEBIAN_VERSION}
    git rebase -Xtheirs origin/master
    gbp import-ref -uHEAD
    mk-build-deps --install --remove --tool="$TOOL_ARGS" debian/control
gbp buildpackage --git-upstream-tag='v%(version)s' --git-upstream-branch=master --git-ignore-branch --git-upstream-tree=BRANCH --git-ignore-new --build=all -us -uc -rfakeroot --lintian-opts profile debian
    gbp tag --debian-tag="debian/${DEBIAN_VERSION}/%(version)s" --retag
    git pull --no-edit
gbp push --debian-branch=debian/${DEBIAN_VERSION} git@$CI_SERVER_HOST:$CI_PROJECT_PATH.git
    gbp dch -R -N $DEB_VERSION --spawn-editor=never --commit
    git push --follow-tags git@$CI_SERVER_HOST:$CI_PROJECT_PATH.git
    ;;
esac

=========================================


cu denny
_______________________________________________
git-buildpackage mailing list
[email protected]
http://lists.sigxcpu.org/mailman/listinfo/git-buildpackage

Reply via email to