Commit graph

415 commits

Author SHA1 Message Date
Rémi Vanicat
1eac6b70c6 Use ediff interactive merge to help conflict resolution.
Idea from smerge code, adapted to git, new key binding on "e"
2009-03-01 13:01:19 +01:00
Rémi Vanicat
5cd62fa9ac Removing one of the two "i" bindings 2009-03-01 13:01:19 +01:00
Jesse Alama
44763451f1 Permit cancelling log edits.
* magit.el: Permit cancelling log edits.

magit-log-edit-confirm-cancellation: New defcustom.
magit-log-edit-map: New keybinding: C-c C-k to cancel the log.
magit-log-edit-cancel-log-message: New function.
magit-pop-to-log-edit: Indicate that cancellation is possible.
2009-03-01 05:10:41 -04:00
John Wiegley
5c42f45f53 'C-u x' will do a hard reset 2009-03-01 05:10:41 -04:00
John Wiegley
8583b8c39d Made git-svn support usable for the average user
Previously it was insisting on a branch named "git-svn", but I'm not
sure if this is ever created by default.  Also, there is no need to call
"remote update", and if it is called asynchronously, it blocks the
subsequent call to svn fetch.
2009-03-01 05:10:40 -04:00
Marius Vollmer
63e78891d8 Only try to fit current section into window when it is not hidden.
* magit.el (magit-goto-next-section): Here.
2009-03-01 03:02:19 +02:00
Ian Eure
e4032c3d17 Allow magit to work with Tramp. 2009-02-28 19:29:41 +02:00
Marius Vollmer
549a2cb836 No idea how to present tags in the UI. 2009-02-28 19:25:20 +02:00
Marius Vollmer
5a1039cd6f Show correct filenames in the "Pending changes" section.
* magit.el (magit-diff-line-file): Don't insist on "a/..." being the
first file.
2009-02-28 19:22:22 +02:00
Marius Vollmer
8652dc979c Make it an option to stage everything on magit-log-edit.
* magit.el (magit-commit-all-when-nothing-staged): Added ask-stage choice.
(magit-log-edit): Implement it.
2009-02-28 19:16:31 +02:00
Marius Vollmer
144716f26e Tentative plan for 0.7. 2009-02-28 17:05:02 +02:00
Steve Purcell
99d518bba7 Show unpushed/pulled commits from a git-svn remote in magit-status 2009-02-28 17:01:16 +02:00
Marius Vollmer
24a0985910 Unbreak magit-remote-update for git-svn users.
* magit.el (magit-remote-update): Don't try to run two git commands
asynchronously at the same time, stupid.
2009-02-28 16:49:23 +02:00
Marius Vollmer
ef479d6b5a Made "git commit --all" more explicit.
* magit.el (magit-log-edit-get-field): New.
(magit-commit-all-when-nothing-staged): New.
(magit-log-edit): Set 'commit-all field accordingly.
(magit-log-edit-commit): Use that field to control "--all" option.
2009-02-20 01:17:37 +02:00
Marius Vollmer
a78f8b6019 Allow '-' and '_' in log-edit field names.
* magit.el (magit-log-header-end, magit-log-edit-get-fields): Here.
2009-02-20 01:15:26 +02:00
David Wallin
3efeed124e magit-goto-next-section: when moving down to the next section, try to fit the
whole hunk in the window
2009-02-19 23:09:26 +02:00
John Wiegley
b991100ce6 Several improvements to the whazzup command
1. Don't report a branch if it has no commit in common with HEAD.  This
   is for people who keep alternate histories in their repositories.

2. Don't report a branch if another branch with the same basename and
   commit as HEAD has already been reported.  Thus, if a branch "foo"
   with 5 unpulled commits was pushed to origin, don't display both
   "foo" and "origin/foo" in the whazzup buffer, since they reflect the
   same thing.
2009-02-19 15:01:32 -04:00
Marius Vollmer
e9bed9b1e2 Fixlet to make magit-status work again when called from a non-Git dir.
* magit.el (magit-get-top-dir): It's default-directory not
default-dir, stupid.
2009-02-19 13:44:41 +02:00
Marius Vollmer
47cffef546 Fixlet to make the log work again.
* magit.el (magit-configure-have-graph): Removed leftover %s from
format string.
2009-02-18 17:53:54 +02:00
Marius Vollmer
3300960cad Merge commit 'jwiegley/master' 2009-02-16 23:59:54 +02:00
John Wiegley
bcb59cac51 Made behavior of M-H and M-h consistent for diffs 2009-02-15 21:38:44 -04:00
John Wiegley
c87154d7f6 Use display-buffer, not pop-to-buffer, when showing magit-process after a delay 2009-02-15 21:08:57 -04:00
Marius Vollmer
cdc036915f Fix mode line process status.
* magit.el (magit-prefix-p): Compare components with equal so that it
works for strings.
(magit-process-indicator-from-command): Take
magit-git-standard-options into account when choping off the head.
2009-02-16 00:29:45 +02:00
Marius Vollmer
bded317bc8 Use Git cherry-pick also for 'a' and Git revert for 'v'.
* magit.el (magit-cherry-pick-commit): Removed, replaced with
magit-apply-item.
(magit-revert-commit): Likewise.
(magit-apply-commit): Use git cherry pick and optionally do everything
magit-cherry-pick-commit and magit-revert-commit could do.
2009-02-15 23:58:46 +02:00
Marius Vollmer
1e3f94437e Pass "--no-pager" to Git.
* magit.el (magit-git-standard-options): New.  Changed almost all uses
of magit-git-executable to also pass magit-git-standard-options.
2009-02-15 23:58:43 +02:00
Marius Vollmer
35ea9ab265 Improve message when discarding changes in a region.
* magit.el (magit-discard-item): Here.
2009-02-15 20:15:46 +02:00
Marius Vollmer
b523d9c15e Don't use dynamic scoping.
* magit.el (magit-refresh-status, magit-insert-staged-changes):
Explicitly pass no-comment parameter.
* magit.el (magit-show-stash): Use 'stash', not 'info.
2009-02-15 20:13:13 +02:00
Marius Vollmer
2913ea0220 Make 'sure' that taking a snapshot does not revert buffers wrongly.
* magit.el (magit-stash-snapshot): Wrap calls to magit-run in one
magit-with-refresh so that magit-revert-files is only called once.
Calling it twice within one second does not work.
2009-02-15 20:00:35 +02:00
John Wiegley
c97fa1a0c3 If SPC and DEL are used within a normal text region, just scroll up/down. 2009-02-14 23:58:29 -04:00
Marius Vollmer
d7ae65a579 Distinguish "new file" and "new mode".
* magit.el (magit-wash-diff): Here.
2009-02-15 03:28:31 +02:00
Marius Vollmer
24677b0c7a Put stashes into *magit-stash* so that magit-currently-shown-stash works. 2009-02-15 03:23:45 +02:00
Marius Vollmer
2958f9cfd4 Pass -U arg to diff correctly.
* magit.el (magit-refresh-diff-buffer): Don't cons U arg onto 'args'.
2009-02-15 03:23:17 +02:00
Marius Vollmer
b1eec95572 Fix applying parts of patches in reverse.
* magit.el (magit-insert-hunk-item-region-patch): Pass through "+"
lines for reverse patches.
(magit-apply-hunk-item*): New, factored out of magit-apply-hunk-item
and magit-apply-hunk-item-reverse.
(magit-apply-hunk-item-reverse): New.  Use it instead of passing
"--reverse" to magit-apply-hunk-item so that
magit-insert-hunk-item-region-patch knows whether we are applying in
reverse or not.
2009-02-15 03:11:43 +02:00
Marius Vollmer
a080ca01c1 Clean up the messages produced by magit-init a bit.
* magit.el (magit-init): Message fixes.  Use yes-or-no-p for
potentially destructive operations.
(magit-status): Message fixes.
2009-02-15 02:26:21 +02:00
Marius Vollmer
b670b16b33 Merge 'voins/init'. 2009-02-15 02:11:06 +02:00
Marius Vollmer
401c548dc5 More info for '?'.
* magit.el (magit-describe-item): Add magit-section-context-type.
2009-02-15 02:06:53 +02:00
Marius Vollmer
1b4094e3de Removed binding for 'K', run git clean when hitting 'k' on the section title.
* magit.el (magit-discard-item): Run git clean when point is on the
"Untracked files" section title.
* magit.texi: Document this.
2009-02-15 02:06:06 +02:00
Marius Vollmer
b627c9203a Merge commit 'voins/diff' 2009-02-15 01:53:00 +02:00
Marius Vollmer
9fc7465d61 Do not use '-x' with git clean.
I am afraid that would surprise to many people since "removing
untracked files" means removing the ones listed in the status buffer.
2009-02-15 01:50:11 +02:00
Marius Vollmer
62d9f73aea Merge commit 'voins/clean' 2009-02-15 01:47:44 +02:00
John Wiegley
d38c05a5ac M-h and M-H now hides the whole current file/buffer, and M-s/S shows it. 2009-02-15 01:15:55 +02:00
John Wiegley
7910b4c3dd When popping to the magit-process after a delay, goto point-max. 2009-02-15 01:14:50 +02:00
John Wiegley
efdd97b0b0 For git-svn repositories, 'f' runs git svn fetch in addition to remote update. 2009-02-15 01:09:54 +02:00
Marius Vollmer
e7ef2256e2 Optionally popup the process buffer for asynchronous commands.
From John Wiegly.

Defines a number of seconds, after which magit will automatically
popup the magit-process buffer so the user can see what git is up to.
Off by default.  I use this because sometimes when a commit or push
takes more than an expected amount of time, I start to wonder what
happened.
2009-02-15 00:58:46 +02:00
Marius Vollmer
8b4614b52a Made commits asynchronous, in case there is a long-running pre-commit hook.
* magit.el (magit-run*): Send input to asynchronous processes.
(magit-run-async-with-input): New.
(magit-log-edit-commit): Use it.
2009-02-15 00:50:54 +02:00
John Wiegley
7725bfa2b8 In magit-process-filter, use save-current-buffer instead of save-excursion.
Otherwise, the location of point gets messed up for people watching the
buffer.
2009-02-15 00:39:56 +02:00
John Wiegley
a2e14e528f New command "Z" saves an instant of your index and working in the stash.
This is different from regular stashing because there is no prompting for a
name, and the stash is immediately re-applied.  It's just a way of taking a
quick snapshot of your working tree, so you can come back to later if need
be.

For example, if you had just made a lot of changes to your project, and then
needed to make another sweeping change before you could commit again, this
would let you safely store your changes without having to resort to a branch.
2009-02-15 00:39:38 +02:00
John Wiegley
0836f17507 Always insert the "Git finished" message at the end of the process buffer. 2009-02-15 00:36:34 +02:00
Alexey Voinov
e66d174f68 Allow smaller or larger hunks when diffing
The other day I hacked some file, and all changes obviously split in
two commits logically, but I can't do that because changes from
"different commits" were to close to each other and diff shows them
ina single hunk. There's possibility in git add -i to split current
hunk into smaller ones in such situations. I wanted to do this without
leaving emacs.

Now magit have control over -U<n> option to git-diff.
2009-02-12 14:53:18 +03:00
Marius Vollmer
2e17b9e2f7 Performance hack.
* magit.el (magit-insert-section): Use char-before instead of looking-back.
2009-02-12 01:40:00 +02:00
Alexey Voinov
dad98cea88 Handle fresh empty repository.
It was imposible to see what was staged for a first commit on a fresh
git repository. The only visible lines was fatal error messages from
git. Now diff against null tree object is shown in magit status buffer
if nothing was yet commited to the repository. The cost is 15-byte
object added to the repo, but it shuld disappear on first call to git
gc.
2009-02-11 13:37:16 +03:00
Alexey Voinov
9db7719b96 Support for git init 2009-02-11 13:31:19 +03:00
Alexey Voinov
32d59881a3 Support for git clean 2009-02-11 11:09:18 +03:00
Marius Vollmer
f89a045282 Only ever commit staged changes when amending a commit.
The usual behavior of committing all unstaged changes when there are
no staged changes makes it impossible to amend a commit just to fix
the commit message, which is a quite common thing to do.

* magit.el (magit-log-edit-commit): Do not pass "--all" to git commit
when amending.
2009-02-10 23:31:16 +02:00
Marius Vollmer
8a979172c8 Offer current branch as default when merging in Wazzup buffer.
* magit.el (magit-guess-branch): New.
(magit-manual-merge, magit-automatic-merge): Use it to get the default
rev to merge.
2009-02-09 03:58:47 +02:00
Marius Vollmer
b825b8899c Fixlet.
* magit.el (magit-find-buffer): Don't try to expand the
default-directory when it is nil.
2009-02-09 02:51:57 +02:00
Marius Vollmer
4ec9df0070 Make the Git executable customizable.
* magit.el (magit-git-executable): New.  Replaced all hardcoded uses
of "git" with it.
2009-02-08 23:06:49 +02:00
Marius Vollmer
59bd8eccc7 Use the digits to hide and show sections.
* magit.el (magit-section-lineage, magit-section-show-level, magit-show-level,
magit-define-level-shower-1): New.
(magit-mode-map): Bind the digits and M-digits to magit-show-level-N
and magit-show-level-N-all.
* magit.texi: Document it in a new chapter for Sections.
2009-02-08 01:35:56 +02:00
Marius Vollmer
64d24aa143 Make *magit-process* buffer read-only.
* magit.el (magit-run*, magit-process-sentinel, magit-process-filter):
Set buffer-read-only and inhibit-read-only as appropriate.
2009-02-07 23:03:28 +02:00
Marius Vollmer
2904e79a08 Make magit-status prompt less.
* magit.el (magit-status): Only read the top directory with e prefix
argument or when we are not inside a Git repository.
* magit.texi, NEWS: Document the new behavior.
2009-02-07 22:50:51 +02:00
Marius Vollmer
5f1c91c98d Merge commit 'purcell/run-git-svn-async' 2009-02-07 21:50:09 +02:00
Marius Vollmer
160dc9e03d Git log seems to forget a final newline sometimes.
* magit.el (magit-insert-section): Make sure the inserted text ends in
a newline.
2009-02-07 21:20:41 +02:00
Marius Vollmer
2fd55bb413 Wazzup not only for master.
* magit.el (magit-wazzup): Don't hardcode "master".
2009-02-05 22:50:19 +02:00
Marius Vollmer
94b8e5acc7 Make stash showing behave like showing commits.
* magit.el (magit-show-stash): New.
(magit-visit-item): Use it and pop to the buffer for stashes.
(magit-show-item-or-scroll-up, magit-show-item-or-scroll-down): Handle
stashes.
2009-02-05 22:42:26 +02:00
Marius Vollmer
d65806bd35 Offer completion for 'l' and 'L' and allow end to be specified as well.
* magit.el (magit-read-rev-range): Don't do anything special when
current-prefix-arg is set.
(magit-log): Use magit-read-rev-range instead of read-string.
(magit-log-long): Likewise.
2009-02-05 22:23:57 +02:00
John Wiegley
26d1719fe1 Don't duplicate magit buffers for the same project. 2009-02-04 03:35:56 -04:00
John Wiegley
ce3965cd8a Made the maximum log length configurable, and defaulting to 100 commits. 2009-02-04 00:33:39 -04:00
John Wiegley
f73a222ed5 Made l/L a little bit smarter. 2009-02-04 00:33:39 -04:00
John Wiegley
8898ef7926 Allow visting of stashes. 2009-02-04 00:33:39 -04:00
Steve Purcell
2ee532a01d Run git-svn dcommit and rebase asynchronously to avoid blocking the UI 2009-02-02 15:23:31 +01:00
Alexey Voinov
0c6172f180 Handle non-existent directories.
On non-existent directiories magit-get-top-dir was failing returning
garbage string like "zsh: cd: no such file or directory: ...". Now it
returns nil in such cases.

Signed-off-by: John Wiegley <johnw@newartisans.com>
2009-02-01 02:45:51 -04:00
Marius Vollmer
09e9d0d4f4 Credit John. Thanks! 2009-01-28 22:23:46 +02:00
John Wiegley
a2dd7a38bd Add a command, V, which shows information about the current branches. 2009-01-27 17:46:35 -04:00
John Wiegley
63b7adc76b Add a command, E, which calls git-interactive-rebase to initiate an
interactive rebase session using Emacs as the editor.
2009-01-27 17:30:04 -04:00
Marius Vollmer
6c8a668d24 Wazzup section fixes.
* magit.el (magit-refresh-wazzup-buffer): Use the branch name as the
title and a type of 'wazzup'.
2009-01-25 01:04:51 +02:00
Marius Vollmer
8f9fb43590 More flexible titles and types for magit-insert-section.
* magit.el (magit-insert-section): Revert earlier change: first
argument is used as the section title and the section type is usually
nil.  When the first argument is a pair, it specvifies both the title
and the type.
2009-01-25 01:03:24 +02:00
Marius Vollmer
3baf7f4372 Indentation fixes. 2009-01-25 00:41:03 +02:00
Marius Vollmer
a6bc339e9c Cleaned up section creation a bit.
* magit.el (magit-section-hidden-default): New.
(magit-new-section): Only expect type as argument, not a general list
of slots.  Take 'hidden' value from magit-section-hidden-default.
(magit-with-section): Likewise.
(magit-wash-diff): Adapted.
2009-01-25 00:39:03 +02:00
Marius Vollmer
583ecc7a12 Don't highlight the whole log or commit buffer.
* magit.el (magit-refresh-commit-buffer): Use nil as type for outer
section so that the highlight is not used for it.
(magit-refresh-log-buffer): Likewise.
2009-01-24 21:08:25 +02:00
Marius Vollmer
528e13f4a7 Wazzup. 2009-01-24 20:57:53 +02:00
Marius Vollmer
60f09e0615 Clean up types and titles of sections.
* magit.el (magit-with-section): Check that args is a list before
accessing its car.
(magit-insert-section): Set the title of the section from the real
title, and the txpe from the real type.
2009-01-24 20:56:42 +02:00
Marius Vollmer
0ce0a2524f Be smarter about correcting point. 2009-01-24 20:45:34 +02:00
Marius Vollmer
ef809ab4d3 Remove debugging messages. 2009-01-24 20:42:34 +02:00
Marius Vollmer
f95f34e695 Acknowledge Alexey. 2009-01-22 00:47:55 +02:00
Alexey Voinov
c691bc7800 Allow unmarking the marked commit.
Once, I hit "." instead of "r ." by accident and have found no way to
reset this mark. This just seems not to be right.
2009-01-22 00:47:50 +02:00
Alexey Voinov
76406385a2 Fixed visualization of marked commits
Face of previously marked commit was not restored when marking
another. Also red color looks really bad on dim gray
background. Orange is much better.
2009-01-22 00:46:06 +02:00
Marius Vollmer
c3830edab8 Make it work better on Windows. Thanks to Jeff Dik.
* magit.el (magit-find-buffer): Expand the default-directory.
2009-01-19 01:33:15 +02:00
Marius Vollmer
3433556d03 Merge commit 'fdr/sign-off' 2009-01-19 01:22:01 +02:00
Marius Vollmer
3e2905924a Merge commit 'cymacs/master' 2009-01-19 01:18:35 +02:00
Alexey Voinov
10fe99adb4 Ambiguity in call to git log fixed
If branch or tag name is the same as some file in repository, git log
was reporting that as "ambiguous argument 'test': both revision and
filename. Use '--' to separate filenames from revisions".
2009-01-19 01:06:04 +02:00
Marius Vollmer
3d34a7ca21 Make buffer saving behavior customizable.
Thanks, Geralt!

* magit.el (magit-save-some-buffers): New.
(magit-status): Use it.
2009-01-19 00:56:12 +02:00
Marius Vollmer
64b8265ad3 Removed unused threshold machinery.
* magit.el (magit-current-section): Removed threshold argument.
Updated all callers.
(magit-collapse-threshold): Removed.
2009-01-19 00:55:26 +02:00
Marius Vollmer
b430adda17 Make sure that point never ends up in an invisible region.
* magit.el (magit-correct-point-after-command): New.
(magit-post-command-hook): New, to collect all post-command activitiy.
(magit-mode): Use it instead of magit-highlight-section.
(magit-section-set-hidden): Don't touch the rear-stickyness.
2009-01-19 00:24:11 +02:00
René Stadler
45fb865e1b Fix incorrect diff hightlighting of lines beginning with "+" or "-". 2009-01-09 23:21:02 +02:00
René Stadler
b7fe74520d Disable undo in all magit-mode buffers.
Saves lots of memory and prevents triggering a scary warning when Emacs detects
the massive amount of undo usage.
2009-01-09 23:20:58 +02:00
Daniel Farina
68344a20a0 Add signoff customization option
Signed-off-by: Daniel Farina <drfarina@acm.org>
2008-12-17 02:23:20 -08:00
Marius Vollmer
b30faeb310 Merge commit 'voins/voins' 2008-11-30 22:37:42 +02:00
Marius Vollmer
f055b18754 Typo.
* magit.el (magit-marked-commit): Fix typo in error message.
2008-11-30 22:31:22 +02:00
Alexey Voinov
7386af19b5 Use "medium" git log format when visiting commit
Visiting commit does not always work well when default git log format
was changed. This change makes git log explicitly use "medium" format,
which is out of the box default value.
2008-11-28 23:56:50 +03:00
Marius Vollmer
54ad9f00c8 Added Alex and Marcin to copyright header. 2008-11-13 20:48:55 +02:00