Re: Pushing into a repository with working directory?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Shawn O. Pearce wrote:
Junio C Hamano <junkio@xxxxxxx> wrote:
However, I am not sure if that is easy to understand for the
users.  It would be sane to deny pushing into the current branch
for a non-bare repositories by default, and if we do allow it
(perhaps with 'git-push --force'), then detach the HEAD as you
suggest.  On the other hand, pushing into the current branch of
a bare repository should just work; the HEAD pointer in a bare
repository is not about the commit the index and the working
tree are based on, but which branch is the primary branch of the
repository.

But from the working directory management tools' perspective HEAD
*is* about the current index and the current working directory.
If HEAD doesn't match the index and working directory closely
enough then the user is going to do something stupid, like commit
a negative delta by accident.

Pushing into the current branch of a repository with a working
directory probably shouldn't be allowed by default as users probably
don't want to do that.


I do this all the time. I develop on my laptop and send changes to a testserver where I check out the revision I just pushed to the working directory attached to it. Doing it the other way around is cumbersome, as I've got ssh-authentication installed on the server but don't wish to have that on my laptop. I could ofcourse do this with the alternates mechanism and pull things from the alternate repo to the one I really use, but that seems like I have to work around a limitation in git that isn't really there (or at least shouldn't be there for any logical or technical reason).

 But if --force is used then detaching the
HEAD is probably the best idea.  The user could easily recover by
doing `git checkout origbranch` (though they may need `git checkout
-m origbranch` if their working directory was dirty).


Since we can determine if there's a working directory or not, why not just allow the fast-forward case if the working directory is clean and update the working directory for the user? This can't lose any data and would also make it very easy to, fe, keep a website in git and just push it straight to the webserver when there's been modifications in the users repo. --force should behave the same way, possibly with an extra check to see if the working directory is clean before checking it out.

--
Andreas Ericsson                   andreas.ericsson@xxxxxx
OP5 AB                             www.op5.se
Tel: +46 8-230225                  Fax: +46 8-230231
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]