I have a git repository that is built with one library and during compiling the library is switched for another to get 2 versions of compiled code for 2 different libraries. (different versions of the same software)

This method has been working until now.

Now I have received a new 3rd library that differs significantly in some classes. I would like to keep the codebase same and just change the parts of the code where there are issues wrt. to the new library.

Question is, how to go about setting up a second repository that is linked to the master branch of the first repo ?. I want to do development only in the main repo and then sync the changes to the second repo and change only the code that is relevant wrt. libraries.

Is this the right way to go about this problem? or is there another way.

Thanks!

If I understand your problem correctly it should be possible to do this with a separate remote bransch.

Create a new branch: git checkout -b feature_branch_name

Edit, add and commit your files.

Push your branch to the remote repository: git push -u origin feature_branch_name

Then set up a build for each branch library combination in your CI environment.

Make a good plan for pushing and merging or addapt Git Flow.

  • Thanks for the info, i will test this out. – J.Doe Sep 14 at 15:00

The problem you are trying to solve is Dependency Management. This is not something Git, Git Submodules, or any other kind of source control can address. Depending on the tech stack you are working with, you have a bunch available:

  • C#/VBScript: NuGet
  • JavaScript: NPM
  • Ruby: RubyGems
  • Java: Maven
  • Python: pip

There are many others.

Dependency management allows your code to utilize different versions of the same library, which is the root problem you are having. This may translate to using branches in Git to develop this, or configuration options during the build process. Regardless, this isn't going to be solved by Git.

It sounds like what you are looking for is git submodules:

git submodules

  • but isn't submodule a different repo that has dependency to the first? here I have the code dependent on a library – J.Doe Sep 14 at 15:00
  • this reads more like a comment, see How to Answer – gnat Sep 14 at 17:08
  • @J.Doe I believe you have this exactly reversed. submodules ARE what you want. You create a repository "Library". Then create another repository for "MyApp". THEN -inside the MyApp repository, you git submodule add Library. A 'submodule' is a REFERENCE to another repository. – Lewis Pringle Sep 14 at 18:17
  • @gnat Brevity is sometimes appropriate ;-). – Lewis Pringle Sep 14 at 18:20
  • the fact that you had to explain what you mean in a comment that is about twice longer than the answer suggests that this is probably not the case when brevity is appropriate – gnat Sep 14 at 20:49

Your Answer

 
discard

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.