git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Git private branch Feature Suggestion
@ 2025-09-10 23:28 ynckz
  2025-09-10 23:54 ` rsbecker
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: ynckz @ 2025-09-10 23:28 UTC (permalink / raw)
  To: git

Hi Git developers,

I have a request for you. Could you please add private branches? This
is a really useful thing.
Imagine that you want to publish your project as open source, but you
need to hide the .env file in a separate repository. It's easier to do
everything in one repository, but in a different branch. Maybe there
is another way, and I'm just dumb as fuck, but here's another example:
Say you don't want to release a new feature yet. To do so, create a
private branch, make the feature there, then merge it into the main
branch.

Maybe I'm a dumb ass, and don't need to ask this of you, but GitLab,
etc., anyway, I'd appreciate it if you could add this feature.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* RE: Git private branch Feature Suggestion
  2025-09-10 23:28 Git private branch Feature Suggestion ynckz
@ 2025-09-10 23:54 ` rsbecker
  2025-09-11  0:00 ` brian m. carlson
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: rsbecker @ 2025-09-10 23:54 UTC (permalink / raw)
  To: 'ynckz', git

On September 10, 2025 7:29 PM, ynckz wrote:
>I have a request for you. Could you please add private branches? This is a really
>useful thing.
>Imagine that you want to publish your project as open source, but you need to hide
>the .env file in a separate repository. It's easier to do everything in one repository,
>but in a different branch. Maybe there is another way, and I'm just dumb as fuck,
>but here's another example:
>Say you don't want to release a new feature yet. To do so, create a private branch,
>make the feature there, then merge it into the main branch.
>
>Maybe I'm a dumb ass, and don't need to ask this of you, but GitLab, etc., anyway,
>I'd appreciate it if you could add this feature.

Put your private content into a submodule and set the visibility of that submodule
to private in GitLab. Your *.env files go in there and will not get shared.

Once you have this working, please try to use polite language instead of what is
In your message. Thanks.


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Git private branch Feature Suggestion
  2025-09-10 23:28 Git private branch Feature Suggestion ynckz
  2025-09-10 23:54 ` rsbecker
@ 2025-09-11  0:00 ` brian m. carlson
  2025-09-11  0:13 ` Henrique Soares
  2025-09-11  8:15 ` Kristoffer Haugsbakk
  3 siblings, 0 replies; 5+ messages in thread
From: brian m. carlson @ 2025-09-11  0:00 UTC (permalink / raw)
  To: ynckz; +Cc: git

[-- Attachment #1: Type: text/plain, Size: 2974 bytes --]

On 2025-09-10 at 23:28:54, ynckz wrote:
> Hi Git developers,
> 
> I have a request for you. Could you please add private branches? This
> is a really useful thing.
> Imagine that you want to publish your project as open source, but you
> need to hide the .env file in a separate repository. It's easier to do
> everything in one repository, but in a different branch. Maybe there
> is another way, and I'm just dumb as fuck, but here's another example:
> Say you don't want to release a new feature yet. To do so, create a
> private branch, make the feature there, then merge it into the main
> branch.

The reason we haven't added this is that it isn't secure.  Git has a
feature called namespaces, which basically implements the feature you
want.  There are different namespaces and references can be stored in
any one of them.

Here's what the gitnamespaces(5) manual page says about this:

    The fetch and push protocols are not designed to prevent one side
    from stealing data from the other repository that was not intended
    to be shared. If you have private data that you need to protect from
    a malicious peer, your best option is to store it in another
    repository. This applies to both clients and servers. In particular,
    namespaces on a server are not effective for read access control;
    you should only grant read access to a namespace to clients that you
    would trust with read access to the entire repository.

It then goes on to explain the kinds of approaches that can be used to
exploit this, but basically, if an attacker can find an object ID that
it thinks the server has, it can acquire information about that object.

Now, you might say, well, the object ID is private.  But it's very
common to leak those in issues, build logs, or as part of a version
identified in a build, so in general we can't base security on that.
Cryptography tells us that cryptographic hashes of general data are not
secrets, so we cannot rely on them for access control.

It could be possible to allow this _if_ Git had some way to know that
the client was only allowed to access certain refs _and_ Git were
configured to only allow access to objects that were reachable from
those refs.  However, Git doesn't have that information and that's in
general expensive to determine, so it would make things like partial
clone perform really terribly.  It would also require a lot of changes
to Git's internals and security model, and nobody has so far volunteered
to do that.

I will note that in general, secrets should never be checked into a
repository.  It's too easy to accidentally expose a repository, and when
that happens, you leak every secret in the entire history, and then
rotating them all is a colossal hassle.  (I know, I've had to do it.) If
you use a secret store, which is a security best practice, then this
doesn't happen.
-- 
brian m. carlson (they/them)
Toronto, Ontario, CA

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 262 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Git private branch Feature Suggestion
  2025-09-10 23:28 Git private branch Feature Suggestion ynckz
  2025-09-10 23:54 ` rsbecker
  2025-09-11  0:00 ` brian m. carlson
@ 2025-09-11  0:13 ` Henrique Soares
  2025-09-11  8:15 ` Kristoffer Haugsbakk
  3 siblings, 0 replies; 5+ messages in thread
From: Henrique Soares @ 2025-09-11  0:13 UTC (permalink / raw)
  To: ynckz; +Cc: git

On Thu, Sep 11, 2025 at 02:28:54AM +0300, ynckz wrote:
> I have a request for you. Could you please add private branches? This
> is a really useful thing.

Any branch created locally is private by default.
Just don't push it to the remote origin and nobody will have access to it.

> Imagine that you want to publish your project as open source, but you
> need to hide the .env file in a separate repository. It's easier to do
> everything in one repository, but in a different branch. Maybe there
> is another way, and I'm just dumb as fuck, but here's another example:

If you need to share the .env file to few people, but not to everyone,
then use a submodule.

-- Henrique

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Git private branch Feature Suggestion
  2025-09-10 23:28 Git private branch Feature Suggestion ynckz
                   ` (2 preceding siblings ...)
  2025-09-11  0:13 ` Henrique Soares
@ 2025-09-11  8:15 ` Kristoffer Haugsbakk
  3 siblings, 0 replies; 5+ messages in thread
From: Kristoffer Haugsbakk @ 2025-09-11  8:15 UTC (permalink / raw)
  To: ynckz, git

On Thu, Sep 11, 2025, at 01:28, ynckz wrote:
> Hi Git developers,
>
> I have a request for you. Could you please add private branches? This
> is a really useful thing.
> Imagine that you want to publish your project as open source, but you
> need to hide the .env file in a separate repository. It's easier to do
> everything in one repository, but in a different branch. Maybe there
> is another way, and I'm just dumb as fuck, but here's another example:
> Say you don't want to release a new feature yet. To do so, create a
> private branch, make the feature there, then merge it into the main
> branch.
>
> Maybe I'm a dumb ass, and don't need to ask this of you, but GitLab,
> etc., anyway, I'd appreciate it if you could add this feature.

I use a sibling repository `.git-mine` with files that don’t
overlap with those from `.git`.  This way I can have two “working trees”
checked out.

-- 
Kristoffer Haugsbakk

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2025-09-11  8:15 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-10 23:28 Git private branch Feature Suggestion ynckz
2025-09-10 23:54 ` rsbecker
2025-09-11  0:00 ` brian m. carlson
2025-09-11  0:13 ` Henrique Soares
2025-09-11  8:15 ` Kristoffer Haugsbakk

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).