top | item 1996867

Can I have multiple Git repos from a single project folder?

6 points| circuitbreaker | 15 years ago

I have a project that I want to maintain in Git. It is a web-project that I develop in Eclipse. Essentially, there are two components:

  1) the main service engine (i.e. the Java code)
  2) the web-files (i.e. the HTML, JSP, CSS, and JS files).
I'd like to maintain this all with Git but I'd like to have distinct repos for each component of the site. So, is there a way to have multiple repos from this single project folder? More specifically, is it possible to have multiple files from a single folder belong to different repos?

3 comments

order

timtadh|15 years ago

if you want the files interleaved in the same folder hierarchy (ie. not separated into engine and web-files as @shorbaji suggests) to my knowledge there is no way to do this. I doubt any folder based version control system will allow you to do that. You would have to use something like RCS :shudder:

If you are considering such a structure, ask your self: why? This is not a common structure (thus the lack of tool support), but your problem is common.

If you want to separate your files into two subdirectories as suggested, I recommend using a top level git repo to track all of it, and using git submodule for your engine:

    projects 
      | engine # directory containing you engine code
         | .git
         | files...
      | MyProject
         | .git
         | .gitmodules
         | engine # a clone of your engine repository above
            | ...
         | the rest of your files ...
If you don't know how git submodule works, read the man pages.

circuitbreaker|15 years ago

Ya, I was thinking about doing exactly that. I figured that might be the best option, but thought I'd ask in case there was some Git feature that I just didn't know about. I'll probably go this way. Thanks!

shorbaji|15 years ago

If you have these components in separate folders within the main project folder simple create a git repo within each folder.

  $cd engine
  $git init .
  $cd ../web-files
  $git init .
If you have one folder within the other, you can do the same but use .gitignore