Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Git repository setup for a project that has a server and client

I am part of a project that is starting up that will have a client executable and a server executable. We are using git to help keep our team updated with code and this is the first time for many of us using git (This project is for a class). I am starting to setup the git repository for my project to use but I am not sure what would be the best design for having client and server code.

So onto the question, how should the repository be setup? There will not be a lot of code sharing between the two except for networking. However we are seeing the networking between the two as the most important aspect and want to keep both using the same networking concepts. I've done some research into the top and I see possibilities, two separate repositories where we will have to ensure both codes are compatible with each other, or do we use a single repository?

I'm sorry for the fairly new approach for this, I've read "Git Pro" but haven't had too much experience yet with using git for project working with multiple people.

like image 482
CodeNeko Avatar asked Feb 06 '13 20:02

CodeNeko


1 Answers

If the clients and servers are fairly independent one from another, they are good candidate for being in their own git repo. This is the component approach.

You could have three repos:

  • client
  • server
  • networking (common modules)

The submobules in Git are neat to record the exact SHA1 you are using together for your system.
So you could define 2 parents repo:

  • client app

    • client
    • networking
  • server app

    • server
    • networking

The idea being to be able to say if the client and the server are using the same or a different version of the networking.

The all setup might be an overkill for a class project, but could illustrate the difference between the system approach (everything in one giant repo), and the component approach.

Separating in different git repo allows for independent tagging and branching.

like image 73
VonC Avatar answered Oct 22 '22 01:10

VonC