Git repository setup for a project that has a server and client
Asked Answered
O

2

14

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.

Outward answered 6/2, 2013 at 20:1 Comment(0)
E
7

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.

Excurrent answered 6/2, 2013 at 20:15 Comment(1)
This sounds like the best way to do it. I tried it out and had some issues with it not updating changes in the networking submodule in the other repos but I think I can figure it out. Thanks.Outward
D
0

You should use a single repository, because it can hold multiple projects/solutions/anything else that builds an executable.

In general, I would organize it the same way that you would like to have it organized locally. There is no reason to deviate from what works for you to accommodate git.

I would suggest setting up a github repository that all parties may access.

Deliberation answered 6/2, 2013 at 20:10 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.