Kurisu

Kurisu

Using Git to share efficiently libraries between projects

You can go directly to the last paragraph of this post to read about my concern.


I was trying Git submodules then found the above post on Bitbucket, and it fits better my use case. The issue I had with git submodules is that my co-worker could not just pull a parent repository and just work on it without pulling explicitly the submodules also. With subtrees this complexity is gone. I can edit a shared library in any of the projects that are using it and push the commit to its remote repository. Then later in any other project that is using it I can make a pull request to have the library up-to-date. And my co-worker absolutely does not need to be aware of it for it to work.

But now I’m facing a situation that is a bit confusing, at least for me. I have a private repository for a library auth that is basically a set of helpers for authentication. I use it as a git subtree in multiple Elixir /Phoenix projects. So in my last project I have to deal multi-lingual content and I prefer that each application in the project handle the internationalization through its own Gettext backend. Then in my auth library I generate content in multiple languages for that project. But other projects that use this same library don’t necessary need those translations files.

So I’m wondering how to use .gitgnore files so that a parent git repository keep trace of a folder it generated inside a subtree repository, while the subtree repository should ignore that folder when pushing to its own remote repository. The folder in my case is the one that contains the Gettext translations. I can ignore the folder in the subtree repository, but is not it meaning that the main project repository will also follow that rule?

Most Liked

dimitarvp

dimitarvp

That’s exactly my point – now that I reread my post, it’s not clear, sorry. I meant put it on GitHub and don’t put on hex.pm indeed.

dimitarvp

dimitarvp

I’d rather not discuss Git submodules because I heard from several people that they are bad news. I haven’t used them so can’t comment.

In your case you might want to do two things:

  1. Self-host a private Hex repository.
  2. Put your common code there as a library.

I gathered from your post that you don’t want that common code to be public so this likely the solution you are looking for?

dimitarvp

dimitarvp

You are very wrongfully assuming that anyone even cares. :laughing:

Just do it, man. Make a common library, put it up publicly with a short note on what it does and how – don’t need to be detailed. Nobody guarantees any future readers they’ll find anything of use. The amount of abandoned projects out there is gigantic. Just don’t think about it and do it how it’s easiest on you. If that means a public repo, so be it.

Where Next?

Popular General Dev topics Top

AstonJ
This article got me thinking about encrypted chat: Europol said that French police had discovered some of EncroChat’s servers were lo...
New
Kurisu
You can go directly to the last paragraph of this post to read about my concern. I was trying Git submodules then found the above po...
New
finner
Hello devtalk ! Heroku are closing their free tier (dynos) later this month and I was wondering if you guys could recommend any alternat...
New
Girtyp
Hi everyone. Getting right to my question, I have recently thought about implementing payment by installment feature in my website. Who k...
New
PaulMartin
Hey everyone! Do you have any tips or free resources that can help me learn Rspec? Although I know how to write some Rspec, I’m not very...
New
harwind
I have an array of strings in JavaScript, and I need to convert it into a single string with specific delimiter characters between the el...
/js
New
harwind
I’m working on a SQL query for a database containing records of customer transactions. Each transaction has a transaction_id, customer_id...
New
harwind
Given an array of integers, find the length of the longest increasing subsequence. A subsequence is a sequence that can be derived from a...
New
harwind
I am working on a Python script, and you encounter an error related to the misuse of lists and tuples. Here’s a simplified version of you...
New
KnowledgeIsPower
Trivy was attacked for twice recently. CheckMarx and Telnyx was attacked too. Looks like the attack is not slowing down.
New

Other popular topics Top

PragmaticBookshelf
Ruby, Io, Prolog, Scala, Erlang, Clojure, Haskell. With Seven Languages in Seven Weeks, by Bruce A. Tate, you’ll go beyond the syntax—and...
New
PragmaticBookshelf
Write Elixir tests that you can be proud of. Dive into Elixir’s test philosophy and gain mastery over the terminology and concepts that u...
New
Exadra37
I am thinking in building or buy a desktop computer for programing, both professionally and on my free time, and my choice of OS is Linux...
New
PragmaticBookshelf
Design and develop sophisticated 2D games that are as much fun to make as they are to play. From particle effects and pathfinding to soci...
New
brentjanderson
Bought the Moonlander mechanical keyboard. Cherry Brown MX switches. Arms and wrists have been hurting enough that it’s time I did someth...
New
AstonJ
Curious to know which languages and frameworks you’re all thinking about learning next :upside_down_face: Perhaps if there’s enough peop...
New
PragmaticBookshelf
From finance to artificial intelligence, genetic algorithms are a powerful tool with a wide array of applications. But you don't need an ...
New
AstonJ
I’ve been hearing quite a lot of comments relating to the sound of a keyboard, with one of the most desirable of these called ‘thock’, he...
New
sir.laksmana_wenk
I’m able to do the “artistic” part of game-development; character designing/modeling, music, environment modeling, etc. However, I don’t...
New
xiji2646-netizen
Woke up to this today: Claude Code’s complete source code exposed via npm source map. Not a snippet. All 512,000 lines. 1,900 TypeScript ...
New