3

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!

Adam Miklosi
1351 gold badge2 silver badges7 bronze badges
asked Sep 14, 2018 at 9:34
6
  • 1
    Possible duplicate of Is it a good practice to use branches to maintain different editions of the same software? Commented Sep 14, 2018 at 12:09
  • .. so I would indeed recommend to ignore the already given answers here and try to use the recommendation from the top answer of the link above, which says: use your preprocessor or build system to differentiate between versions Commented Sep 14, 2018 at 14:57
  • I can use the build system to differentiate the versions but the code still has to be changed based on the libraries. How do i maintain 3 different versions of the code due to having dependency on different but similar libraries. Commented Sep 14, 2018 at 15:05
  • 1
    Have a look at this question: Git Repository Structure for Interdependent Projects. You might be butting your head against a similar problem. Commented Sep 14, 2018 at 17:05
  • 1
    Possible duplicate of Git Repository Structure for Interdependent Projects Commented Sep 14, 2018 at 17:06

3 Answers 3

1

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.

answered Sep 14, 2018 at 11:08
0
1

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.

answered Sep 14, 2018 at 16:57
0

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

git submodules

answered Sep 14, 2018 at 13:05
6
  • but isn't submodule a different repo that has dependency to the first? here I have the code dependent on a library Commented Sep 14, 2018 at 15:00
  • this reads more like a comment, see How to Answer Commented Sep 14, 2018 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. Commented Sep 14, 2018 at 18:17
  • @gnat Brevity is sometimes appropriate ;-). Commented Sep 14, 2018 at 18:20
  • 1
    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 Commented Sep 14, 2018 at 20:49

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.