threads / discuss / 25601

Pushing everything

Subject: Pushing everything

## tl;dr

6 messages between Oct 31, 2010 and Oct 31, 2010.

replies: 5people: 5as markdown or json

Maaartin· Oct 31, 2010, 05:47 UTC · lore

I'd like to push all my branches and tags to the server, but for whatever reason "--all" ignores tags and is incompatible with "--tags". I could imagine there's a reason I'm not experienced enough to see?

It seems to me that "--mirror" is quite unusable, since it force-overwrites the remote repo and even deletes refs not locally present. Obviously, a mirror can't be shared, and it doesn't seem to me to be the ideal backup solution for a single person.

However, even if "git push -all -tags" worked, I'm not sure it's a good idea for project with more collaborators. There may be conflicts or other problems and quite often the pushing occurs just before leaving so it's no good time to start resolving conflicts. Can a shared repo be used as a sort of backup as well? I'd like a possibility to backup all my work there anytime without needing to care about anything. This could work by creating sort of private refs in case of any problems, or whatever. Is there something like this, or am I thinking astray? I'd suppose, something like this could be very useful for a company where it'd provide a simple backup solution for everybody.

Tay Ray Chuan· Oct 31, 2010, 06:43 UTC · re: Maaartin · lore

Re: Pushing everything

On Sun, Oct 31, 2010 at 1:47 PM, Maaartin <grajcar1@seznam.cz> wrote:
> I'd like to push all my branches and tags to the server, but for whatever reason
> "--all" ignores tags and is incompatible with "--tags". I could imagine there's
> a reason I'm not experienced enough to see?
You can spell the refs explicitly, like this:
  $ git push refs/heads/* refs/tags/*
Modify the glob to taste.
-- 
Cheers,
Ray Chuan
Andreas Schwab· Oct 31, 2010, 09:48 UTC · re: Tay Ray Chuan · lore

Re: Pushing everything

Tay Ray Chuan <rctay89@gmail.com> writes:
Show 8 quoted lines
> On Sun, Oct 31, 2010 at 1:47 PM, Maaartin <grajcar1@seznam.cz> wrote:
>> I'd like to push all my branches and tags to the server, but for whatever reason
>> "--all" ignores tags and is incompatible with "--tags". I could imagine there's
>> a reason I'm not experienced enough to see?
>
> You can spell the refs explicitly, like this:
>
>   $ git push refs/heads/* refs/tags/*

The first argument needs to be a reference to a repository, so insert an origin here.

Andreas.
-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."
Maaartin· Oct 31, 2010, 10:48 UTC · re: Andreas Schwab · lore

Re: Pushing everything

Andreas Schwab <schwab <at> linux-m68k.org> writes:
Show 5 quoted lines
> 
> Tay Ray Chuan <rctay89 <at> gmail.com> writes:
> 
> > On Sun, Oct 31, 2010 at 1:47 PM, Maaartin <grajcar1 <at> seznam.cz> wrote:
> >> I'd like to push all my branches and tags to the server, but for whatever 
reason
> >> "--all" ignores tags and is incompatible with "--tags". I could imagine 
there's
Show 8 quoted lines
> >> a reason I'm not experienced enough to see?
> >
> > You can spell the refs explicitly, like this:
> >
> >   $ git push refs/heads/* refs/tags/*
> 
> The first argument needs to be a reference to a repository, so insert an
> origin here.

Nice, that works. It answers only a part of my questions, but maybe I can complete it. I want to use a repo as both a private backup (which everybody may read but nobody should) and a shared base. So maybe something like

git push origin +refs/heads/*:refs/heads/maaartin-* +refs/tags/*:refs/tags/ maaartin-* :

would do both the backup (where everything gets prefixed by my name) and normal pushing of tracking branches. Could it work? Should I try it out or can it be destructive?

Mathias Lafeldt· Oct 31, 2010, 11:32 UTC · re: Maaartin · lore

Re: Pushing everything

On 10/31/2010 11:48 AM, Maaartin wrote:
Show 28 quoted lines
> Andreas Schwab <schwab <at> linux-m68k.org> writes:
>>
>> Tay Ray Chuan <rctay89 <at> gmail.com> writes:
>>
>>> On Sun, Oct 31, 2010 at 1:47 PM, Maaartin <grajcar1 <at> seznam.cz> wrote:
>>>> I'd like to push all my branches and tags to the server, but for whatever 
> reason
>>>> "--all" ignores tags and is incompatible with "--tags". I could imagine 
> there's
>>>> a reason I'm not experienced enough to see?
>>>
>>> You can spell the refs explicitly, like this:
>>>
>>>   $ git push refs/heads/* refs/tags/*
>>
>> The first argument needs to be a reference to a repository, so insert an
>> origin here.
> 
> Nice, that works. It answers only a part of my questions, but maybe I can 
> complete it. I want to use a repo as both a private backup (which everybody may 
> read but nobody should) and a shared base. So maybe something like
> 
> git push origin +refs/heads/*:refs/heads/maaartin-* +refs/tags/*:refs/tags/
> maaartin-* :
> 
> would do both the backup (where everything gets prefixed by my name) and normal 
> pushing of tracking branches. Could it work? Should I try it out or can it be 
> destructive?
Hi,
why don't you try pushing to a local clone first, and then check the results?
This puts your data at no risk.
-Mathias
Konstantin Khomoutov· Oct 31, 2010, 12:30 UTC · re: Maaartin · lore

Re: Pushing everything

On Sun, Oct 31, 2010 at 05:47:38AM +0000, Maaartin wrote:
Show 18 quoted lines
> I'd like to push all my branches and tags to the server, but for whatever reason 
> "--all" ignores tags and is incompatible with "--tags". I could imagine there's 
> a reason I'm not experienced enough to see?
> 
> It seems to me that "--mirror" is quite unusable, since it force-overwrites the 
> remote repo and even deletes refs not locally present. Obviously, a mirror can't 
> be shared, and it doesn't seem to me to be the ideal backup solution for a 
> single person.
> 
> However, even if "git push -all -tags"  worked, I'm not sure it's a good idea 
> for project with more collaborators. There may be conflicts or other problems 
> and quite often the pushing occurs just before leaving so it's no good time to 
> start resolving conflicts. Can a shared repo be used as a sort of backup as 
> well? I'd like a possibility to backup all my work there anytime without needing 
> to care about anything. This could work by creating sort of private refs in case 
> of any problems, or whatever. Is there something like this, or am I thinking 
> astray? I'd suppose, something like this could be very useful for a company 
> where it'd provide a simple backup solution for everybody.

You can have any number of remotes configured for your local repo. So you can easily have one "private" remote repo which you use solely for "backup" pushes and one "shared" remote repo to which you do careful selective pushes.

Note that I'm obsessed with the "backup" idea no less than you and when I started using Git I learned about --mirror and did mirror push to my private remote repo before leaving office, just as you explained. But then I realized this was just a hangover from my Subversion backgrounds, and that to really need --mirror doing regular programming, you have to be fantastically, inhumanly productive. I mean, after a typical one work day programming session you usually have a clear idea about what branch(es) and what tags, if any, you have to push for backup purposes. So it really might be a non-issue.

← back to recent threads