Things that surprise naive users

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

 



Here's my collection of things that I think block the adoption of git by 
novices. They should be easy to fix, but non-trivial shell makes my eyes 
glaze over. I think that, if these were fixed, someone just sitting down 
with git in a corporate environment with stuff set up in advance by the IT 
department would succeed in everything they thought to try. (Once they're 
using the obvious stuff, they can exchange advanced features with each 
other.)

1. If your organization has a bunch of different projects, and there's 
   some central location holding the upstream that people regularly pull 
   from, there's no way to abbreviate this parent directory. (Equivalent 
   of CVSROOT environment variable)

   I.e., we've got file-server:/var/git/<project>.git at my work, with 
   dozens of projects, and you have to give the whole thing to git clone 
   each time. It'd be nice to have a global config option such that, if 
   the argument to git-clone doesn't have any /, it prepends the standard 
   default. (Also an environment variable for the same purpose on a shell
   session scope.)

2. There's no easy way to tell that you've made commits that you haven't 
   pushed upstream. In fact, it's impossible to tell when disconnected 
   whether you've pushed everything. This needs some command to report it,
   and also for push to update the fetch sides of remote heads it updates.

3. You can't create a new repository by pushing, even if you could 
   actually create the repository. Obviously, this will be blocked by 
   policy more often than pushing in general would be, but it's not
   always blocked. It's also harder than it should be to turn a repository 
   created locally into a repository identical in configuration to a clone
   of a newly-created remote repository. 

4. Creating new branches off of existing branches/remotes doesn't 
   configure the new branches in the obvious way (i.e., such that the 
   default update action matches the create action).

5. Still too much output from core makes it to front end users, 
   particularly on successful recursive merge. "git-pull" should say:
   fetching: (bunch of progress)
   updating "origin" (bunch of refs)
   merging "origin" <ref>
    failed: afraid local changes might be messed up in <files>
   or
    manual merge needed in <files>
   or
    success: merge made automatically
   or
    success: no local changes needed merging

   There's still a lot of "I tried this, but it didn't work, but the next 
   thing did work." People are used to programs where, if something fails,
   it is followed by a bunch of meaningless messages, and only the first
   failure output matters and needs to be corrected. (Mostly compilers, 
   but also kernel oopses, other system errors, etc.)

6. I bet people would have an easier time with remote configuration of 
   repositories (when the user is actually able to configure the 
   repository, of course). I.e., if I've set up a remote repository, and
   I have a local clone, I should be able to turn on cvsserver support
   with "git remote-config gitcvs.enabled true" in the local clone, if
   (and only if), I could just go there and use git config.

7. I think there's more useful stuff possible for remote operations on
   upstream repositories, but that's less obvious.

	-Daniel
*This .sig left intentionally blank*
-
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]