# [git question] how to handle few projects with common parts?

2 messages from 2009-10-23 to 2009-10-23. Participants: Ivan Dimitrov, Avery Pennarun.
Thread: https://gitlist.dev/t/21336

## Ivan Dimitrov, 2009-10-23 09:01

Subject: [git question] how to handle few projects with common parts?
Message-ID: <368bc75e0910230201y8e4310dme6276d436c6a6ab6@mail.gmail.com>
URL: https://gitlist.dev/e/368bc75e0910230201y8e4310dme6276d436c6a6ab6%40mail.gmail.com

```
Hi list,
Maybe my question relates rather to configuration management, but it
is over GIT.
In short - I have to manage two projects with 95% same files
(components) and all the rest are platform depended. I am trying to
keep different platforms in different branches, but I can't figure out
how keep the common part of the project synchronized?

-- 
Best Regards,
Ivan Dimitrov

```

## Avery Pennarun, 2009-10-23 16:07

Subject: Re: [git question] how to handle few projects with common parts?
Message-ID: <32541b130910230907x38d8c1f8vb504865eaf5b524@mail.gmail.com>
URL: https://gitlist.dev/e/32541b130910230907x38d8c1f8vb504865eaf5b524%40mail.gmail.com
In-Reply-To: <368bc75e0910230201y8e4310dme6276d436c6a6ab6@mail.gmail.com>

```
On Fri, Oct 23, 2009 at 5:01 AM, Ivan Dimitrov <ivand58@gmail.com> wrote:
> Maybe my question relates rather to configuration management, but it
> is over GIT.
> In short - I have to manage two projects with 95% same files
> (components) and all the rest are platform depended. I am trying to
> keep different platforms in different branches, but I can't figure out
> how keep the common part of the project synchronized?

Are the other files (1) *completely* different across branches, or (2)
the same in each branch, but customized?

If (1), I don't think branches are the answer.  You probably just want
a subdir per platform and a simple config file that points at which
branch to use.  Or maybe use some #ifdefs, or whatever the equivalent
is in your system.

If (2), perhaps what you want is three branches: a main development
branch, and two customized branches that you merge (or rebase) master
into.  I do this sometimes when I want a "development" branch and then
some specific customizations for a particular production deployment.
(eg. a default config file and the "live" config file, and I want both
to be version controlled separately)

Have fun,

Avery

```
