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

Jase
Any opinions on the best platform for dev-friendly blogging?
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
AstonJ
Stopwords are words that you normally filter for things like search queries, such as ‘as’, ‘because’ etc - there are a few online, but I ...
New
brennan
Trying to understand recursion in Elixir. Sometimes it is simple based on the problem, sometimes it is hard. Any suggestions on how to le...
New
DevotionGeo
I have always used antique keyboards like Cherry MX 1800 or Cherry MX 8100 and almost always have modified the switches in some way, like...
New
harwind
I have an array of objects in JavaScript, and I want to sort them based on a specific property of the objects. For example, I have an arr...
/js
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
jaeyson
Is Rust still good to learn? Last time (ages ago) I heard there was changes made by the foundation. If not, is Go suitable for api and w...
New
harwind
Hi, I’m now investigating the complexities of Python loops, specifically the contrast between for and while loops. However, I’ve had some...
New
jaeyson
Hi! I received an email from shopperapproved.com, I’ll copy-pasta here: Hi , Would you be willing to help future Manning.com customers...
New

Other popular topics Top

Exadra37
Please tell us what is your preferred monitor setup for programming(not gaming) and why you have chosen it. Does your monitor have eye p...
New
PragmaticBookshelf
Tailwind CSS is an exciting new CSS framework that allows you to design your site by composing simple utility classes to create complex e...
New
PragmaticBookshelf
Build highly interactive applications without ever leaving Elixir, the way the experts do. Let LiveView take care of performance, scalabi...
New
AstonJ
Continuing the discussion from Thinking about learning Crystal, let’s discuss - I was wondering which languages don’t GC - maybe we can c...
New
rustkas
Intensively researching Erlang books and additional resources on it, I have found that the topic of using Regular Expressions is either c...
New
AstonJ
We’ve talked about his book briefly here but it is quickly becoming obsolete - so he’s decided to create a series of 7 podcasts, the firs...
New
First poster: joeb
The File System Access API with Origin Private File System. WebKit supports new API that makes it possible for web apps to create, open,...
New
AstonJ
If you want a quick and easy way to block any website on your Mac using Little Snitch simply… File > New Rule: And select Deny, O...
New
CommunityNews
A Brief Review of the Minisforum V3 AMD Tablet. Update: I have created an awesome-minisforum-v3 GitHub repository to list information fo...
New
AstonJ
Curious what kind of results others are getting, I think actually prefer the 7B model to the 32B model, not only is it faster but the qua...
New