Every one of the projects in this repository is available at the canonical
URL git://git.madduck.net/madduck/pub/<projectpath> — see
each project's metadata for the exact URL.
All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@git.madduck.net.
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
Joey Hess [Thu, 13 Dec 2007 02:29:16 +0000 (21:29 -0500)]
* Updating git repos no longer uses git-pull -t by default. Git makes it
to much of a PITA to do this, since -t makes git-pull require the
repository and refspec be specified at the command line (which is a bug in
git (#456035). mr used to hardcode those to "origin" and "master", but
that's not always the right choice. So give up on forcing git to be sane
about pulling down all tags. It's insane. Live with it, or configure your
own update command.
Joey Hess [Sat, 3 Nov 2007 18:06:43 +0000 (14:06 -0400)]
* Don't try to test the repo type when doing a checkout, that can't work
since the repo isn't there yet. It was actually checking the repo type
of the parent directory, which caused several unexpected behaviors.
martin f. krafft [Fri, 26 Oct 2007 06:21:53 +0000 (08:21 +0200)]
Get rid of GIT_WORK_TREE
Since we store core.worktree on checkout, we can get rid of the variable
and make it all a bit easier in the config file, passing worktree to the
checkout helper function.
Joey Hess [Fri, 26 Oct 2007 01:57:18 +0000 (21:57 -0400)]
* Add support for including one mrconfig file from another. Unlike chaining,
this doesn't change the paths, and is not tied to a particular
subdirectory. It's useful for loading up library mrconfig files.
* Split git fake-bare support out into a mrconfig.git-fake-bare.
Partly because it's a good example of how to add a new revision control
type, and partly because it's currently too ugly to be in mr itself
due to bugs and limitations in git.
Joey Hess [Thu, 25 Oct 2007 23:45:45 +0000 (19:45 -0400)]
split up actions by rcs
This will make it much easier to add new rcses, or modify just the command
that mr uses for one command for one rcs, without duplicating a lot of code.
martin f. krafft [Thu, 25 Oct 2007 23:33:28 +0000 (01:33 +0200)]
Fix fake-bare worktree checkout
We have to jump through hoops to check out fake-bare repositories since
the target directory probably already exists. Thus, we cheat by telling
git-clone *not* to checkout and then read-tree and checkout-index
ourselves. We also convert the non-bare repository to a fake bare one by
moving stuff around.
Probably a bit hackish but this is the best I can do for now.
martin f. krafft [Thu, 25 Oct 2007 23:33:28 +0000 (01:33 +0200)]
Fix fake-bare worktree checkout
We have to jump through hoops to check out fake-bare repositories since
the target directory probably already exists. Thus, we cheat by telling
git-clone *not* to checkout and then read-tree and checkout-index
ourselves. We also convert the non-bare repository to a fake bare one by
moving stuff around.
Probably a bit hackish but this is the best I can do for now.
martin f. krafft [Thu, 25 Oct 2007 23:11:08 +0000 (01:11 +0200)]
Do not fail determining git url
If no remote URL is in GIT_CONFIG, git-config returns non-zero and thus
causes the script to fail due to set -e. We test for $url anyway, so we
can just keep going here.
martin f. krafft [Thu, 25 Oct 2007 20:41:12 +0000 (22:41 +0200)]
Refactor checking for (type of) Git repository
lib now has two new functions:
is_git_repo returns 0/true if its argument is a git repository
get_git_repo_type return 0/true if its argument is a git repository and
prints one of non-bare/bare/fake-bare to stdout
The mr function implementations now use these functions and have been
simplified. We also allow bare repositories with limited functionality.
martin f. krafft [Thu, 25 Oct 2007 19:57:17 +0000 (21:57 +0200)]
Implement (initial) support for fake bare git repositories
Fake bare git repositories are non-bare git repositories with a detached
worktree. Thus, they require core.worktree set in the configuration. The
current implementation assumes that such repositories are named foo.git.
So far, support has only been added for register, update, log, and
status. Specifically diff and commit do not work yet.