On Sunday, January 06, 2013 14:50:49 Andrei Alexandrescu wrote: > Sent this to dmd-internals, opening for a broader discussion: > > Hello, > > > I wonder how we can define a few aliases of project-wide usefulness to > git. For example, I tried today to get the latest and greatest phobos > into my repo, and got a bunch of conflicts. I searched a while on the > net to figure what the command for "just get the latest remote into my > local copy", which is entirely possible but not obvious and not easy to > find. I got it from here: http://goo.gl/pWvVB and the invocation is: > > git pull --rebase -s recursive -X ours > > which does work like a charm. So I wanted to define a macro called > "pull-force" like this: > > # Inside ~/.gitconfig > [alias] > pull-force = pull --rebase -s recursive -X ours > ... > > This, too, works great. > > What I'd want to do next is define the alias such that other > participants to the dlang project may use it. With time we'd collect a > good set of macros that help our process. > > What is the best way to share a few git config items among all > participants to dmd, druntime, phobos etc?
To repeat what I just said in dmd-internals: Maybe some macros would be useful, but I'm kind of inclined to think that people should just learn git, especially since many people will need it beyond our projects and learning an alias that doesn't exist elsewhere will just hamstring you. I think that it would be a better idea to have a page in the wiki listing useful commands so that people can learn them properly rather than relying on an alias that isn't standard git and which won't exist on any other projects. But with regards to this particular command, I'd argue that you're doing something wrong if you need to force a rebase with a pull. How on earth did you end up in a situation where you needed to force a rebase like this on master or any branch that's in the main repo? Changes should be being done on separate branches, not on master. So, master doesn't need to be rebased. And generally, branches are your local branches, managed by you and which generally are relatively short-lived, so you won't need to do what you're describing here for them. If you're making changes on other branches in the main repository, I'd expect them to be treated the same as master. You make changes on your own, separate branch, push that to your repo on github for a pull request and get that merged into the branch in the main repo. So, in no case do you end up with any branch on your box being out of sync with the main repo. The rebasing that should be needed is when you have to rebase one of your local branches with master, because other changes were merged into master via pull requests, and the changes in your branch haven't been merged in on github yet. The only time that you'd need to make a change directly on master or any branch which is in the main repository is when you actually push upstream from your local box instead of going through github, which we're not generally supposed to do. I have never needed the command that you just listed. Maybe, you did something normal that I can't think of, but it seems to me that the problem here is your workflow, not the need for a macro. - Jonathan M Davis