[freeciv-dev] Working with multiple branches and setups

  • From: Marko Lindqvist <cazfi74@xxxxxxxxx>
  • To: freeciv-dev@xxxxxxxxxxxxx
  • Date: Sun, 14 Mar 2021 19:01:03 +0200

 Some people seem to have a hard time working with multiple branches
and setups (such as different clients) at once.

 For working with multiple branches, 'git worktree' can save the day.
Use one worktree for each base branch.
 For multiple setups, just use separate builddirs configured from the
same source tree.

 Following is what I usually do when I setup freeciv development
environment on a new machine (usully virtual machine). Typos are
possible as I have written this just to be used as an example here,
and have not tested it. Actual build dir configurations also differ
from what I use, but this should give you an idea how it works.

# Create main directories for each branch
mkdir master
mkdir S3_1
mkdir S3_0
mkdir S2_6

# Setup git worktrees.
# master/src has the main repository, other <branch>/src are worktrees
cd master
git clone https://github.com/freeciv/freeciv.git src
cd src
git worktree add ../../S3_1/src S3_1
git worktree add ../../S3_0/src S3_0
git worktree add ../../S2_6/src S2_6

# Setup master build directories
cd ..
mkdir builds
cd builds
mkdir gtk3.22
mkdir qt
mkdir sdl2
cd gtk3.22
../../src/autogen.sh --enable-debug --enable-client=gtk3.22
cd ../qt
../../src/configure --enable-debug --enable-client=qt
cd ../sdl2
../../src/configure --enable-debug --enable-client=sdl2

# Setup S3_1 build directories
cd ../../../S3_1
mkdir builds
cd builds
mkdir gtk3.22
mkdir qt
mkdir sdl2
cd gtk3.22
../../src/autogen.sh --enable-debug --enable-client=gtk3.22
cd ../qt
../../src/configure --enable-debug --enable-client=qt
cd ../sdl2
../../src/configure --enable-debug --enable-client=sdl2

# Setup S3_0 build directories
cd ../../../S3_0
mkdir builds
cd builds
mkdir gtk3.22
mkdir qt
mkdir sdl2
cd gtk3.22
../../src/autogen.sh --enable-debug --enable-client=gtk3.22
cd ../qt
../../src/configure --enable-debug --enable-client=qt
cd ../sdl2
../../src/configure --enable-debug --enable-client=sdl2

# Setup S2_6 build directories
cd ../../../S2_6
mkdir builds
cd builds
mkdir gtk3.22
mkdir qt
mkdir sdl2
cd gtk3.22
../../src/autogen.sh --enable-debug --enable-client=gtk3.22
cd ../qt
../../src/configure --enable-debug --enable-client=qt
cd ../sdl2
../../src/configure --enable-debug --enable-client=sdl2




 - ML

Other related posts: