Commit graph

363 commits

Author SHA1 Message Date
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
Marcin Bachry
2c45b73d01 Added `magit-copy-item-as-kill' command.
* magit.el (magit-copy-item-as-kill): new command to copy sha1 of
commit at point into kill ring.
2008-11-13 00:19:04 +02:00
Marcin Bachry
0bbb824fcd Fixed `magit-goto-previous-section' not showing proper commit in
commit buffer.

* magit.el (magit-show-commit): don't shadow "commit" parameter in let
form
* magit.el (magit-show-commit): accept both string and section struct
as "commit" parameter
2008-11-13 00:08:16 +02:00
Marius Vollmer
e2fa665ba1 Different tag and head label colors for different backgrounds 2008-11-13 00:07:34 +02:00
Marcin Bachry
f6956593bc Show gitk-style coloured tag and head labels in log buffer. 2008-11-12 23:46:41 +02:00
Marcin Bachry
ef3e0d0c5a Washing functions in `magit-insert-section' couldn't set face text
property.

* magit.el (magit-refresh-marked-commits-in-buffer): don't overwrite
  face property if not needed
2008-11-12 23:46:18 +02:00
Marcin Bachry
4e274b5941 Faster way to diff working tree with HEAD.
* magit.el (magit-diff-working-tree): assumes "HEAD" if not revision
was given in minibuffer.
2008-11-12 23:45:44 +02:00
Alex Ott
fe7ffeb943 Add keybindings for git-svn commands.
* magit.el (magit-mode-map): Bind magit-svn-rebase and
magit-svn-dcommit.
* magit.texi (Top): Document it.
2008-11-11 22:50:44 +02:00
Alex Ott
2007a3714e Initial support for git svn. 2008-11-11 20:00:24 +02:00
Marius Vollmer
7ac76de47c Stashing.
* magit.el (magit-wash-stash, magit-wash-stashes): New.
(magit-insert-stashes): New.
(magit-refresh-status): Call it.
(magit-stash): New.
(magit-mode-map, magit-mode-menu): Bind it.
(magit-apply-item, magit-cherry-pick-item, magit-discard-item): Deal
with stashes.
* magit.texi: Document stashing.
2008-11-10 00:07:08 +02:00
Marius Vollmer
cafd4b93de (Updated TODO) 2008-11-09 23:21:43 +02:00
Marius Vollmer
88baa2e066 Make the magic fields in the commit message more explicit.
* magit.el (magit-log-header-end): New.
(magit-log-edit-get-fields, magit-log-edit-set-fields): Look for and
insert it.
2008-11-09 23:13:17 +02:00
Marius Vollmer
157bee4bf5 Even more control for pushing.
* magit.el (magit-push): Always push the current branch and nothing
else.  Ask for a remote when none is configured yet and set it.  Also
ask when given a prefix argument, but don't set it as default in that
case.
* magit.texi (Pushing and Pulling): Document this.
2008-11-07 00:20:13 +02:00
Marius Vollmer
a96b8763b5 More control over pushing.
* magit.el (magit-read-remote): New.
(magit-push): Read remote when given a prefiy argument.
2008-11-07 00:00:37 +02:00
Marius Vollmer
201822e96f Basic support for tagging.
* magit.el (magit-tag, magit-annotated-tag): New.
(magit-log-edit-commit): Run "git tag" when tag field is set.
(magit-mode-map): Add them to 't' and 'T', respectively.
(magit-mode-menu): Add them as well.
(magit-pop-to-log-edit): New.
(magit-log-edit): Use it after removing the tag field.
2008-11-06 23:46:29 +02:00
Marius Vollmer
ee7070af15 Bring back the stars.
* magit.el (magit-insert-unpulled-commits,
magit-insert-unpushed-commits): Explicitly include a asterisk in
output.
2008-11-06 22:53:49 +02:00
Marius Vollmer
121ded3274 Offer tags as well when asking for a revision.
* magit.el (magit-list-interesting-revisions): Append output of "git tags".
2008-11-06 19:12:58 +02:00
Marius Vollmer
b1f4a36f58 Survive old Gits that do not understand git name-rev --always.
* magit.el (magit-name-rev): Don't use --always.
2008-10-29 20:22:13 +02:00
Marius Vollmer
29593edf42 Survive old Gits that don't understand --graph.
* magit.el (magit-insert-unpulled-commits,
magit-insert-unpushed-commits): Don't pass "--graph" to git log.
(magit-have-graph, magit-configure-have-graph): New.
(magit-refresh-log-buffer): Use them to only pass --graph to git log
when it will work.
2008-10-29 19:02:20 +02:00
Marius Vollmer
ffac0a3b19 Declare macros before use.
* magit.el (magit-with-refresh): Move before first use.
2008-10-26 23:58:08 +02:00
Marius Vollmer
7f38df860d Fix copyright notice and description. 2008-10-16 22:24:35 +03:00
Marius Vollmer
adc3638400 Updated TODO. 2008-10-16 01:02:35 +03:00
Marius Vollmer
15572962a0 Make sure that magit-run-with-input runs in the right directory.
* magit.el (magit-run*): Set default-directory of the input buffer.
2008-10-16 01:01:32 +03:00
Marius Vollmer
ed55932caf Released 0.6-1. 2008-10-13 00:34:43 +03:00
Marius Vollmer
1059876c19 Directly use buffer for the commit message.
* magit.el (magit-log-edit-commit).
2008-10-12 03:33:34 +03:00
Marius Vollmer
5e231defde Fixes.
* magit.el (magit-discard-diff): It's "diff" not "item", stupid.
Fixes.
(magit-use-region-p): New, for compatibility.
2008-10-12 03:07:05 +03:00
Marius Vollmer
14004f41c6 Stage/unstage, etc individual lines.
* magit.el (magit-insert-region, magit-insert-current-line): New.
(magit-insert-hunk-item-region-patch): New.
(magit-run*): Added 'input' parameter.
(magit-run-with-input): New.
(magit-diff-item-insert-header, magit-insert-diff-item-patch,
magit-insert-hunk-item-patch, magit-apply-diff-item): Rewritten to
use *magit-tmp* buffer instead of a file.
(magit-apply-hunk-item): Likewise, and also restrict the patch to the
region when appropriate.
(magit-discard-item): Make sure that diff items that are not in the
staged or unstaged sections can not be discarded.
* magit.texi: Document it all.
2008-10-12 02:51:45 +03:00
Marius Vollmer
8a96fa09d1 Different hide/show behavior.
* magit.el (magit-expand-collapse-section): New.
(magit-mode-map): Bind TAB to magit-toggle-section and S-TAB to
magit-expand-collapse-section.
* magit.texi: Document it.
2008-10-12 02:51:45 +03:00
Marius Vollmer
138ac10b34 The "Untracked files" section is back, with better ignoring.
* magit.el (magit-wash-untracked-file, magit-wash-untracked-files,
magit-insert-untracked-files): New.
(magit-insert-unstaged-changes): Don't include other files in output.
(magit-mode-map): '1' jumps to untracked files instead of unpulled
changes.
(magit-stage-item, magit-discard-item, magit-visit-item):
Handle untracked files.
(magit-ignore-file): New.
(magit-ignore-item): Use it.
(magit-ignore-item-locally): New.
(magit-mode-map): Bind it to "I".
* magit.texi: Document it all.
2008-10-12 02:51:39 +03:00
Marius Vollmer
871bf2f2d6 Re-added magit-write-diff-item-patch.
* magit.el (magit-write-diff-item-patch): New, it got lost somewhere...
2008-10-10 15:57:37 +03:00
Marius Vollmer
0264295302 Make discarding work again.
* magit.el (magit-discard-item): Don't escape twice.
2008-10-10 15:50:32 +03:00
Marius Vollmer
f2e8155904 Updated TODO. 2008-10-02 23:23:36 +03:00
Marius Vollmer
c236092857 Update commit display when moving with 'n' and 'p'.
* magit.el (magit-show-commit): When showing a new section, make sure
point is at the beginning.
(magit-goto-previous-section, magit-goto-next-section): Show section
when in a log or reflog buffer.
2008-10-02 23:22:53 +03:00
Marius Vollmer
8f8426b770 Speed up buffer reverting.
* magit.el (magit-revert-buffers): Do not use "git ls-files", just
consider all buffers.
2008-10-02 23:11:44 +03:00
Marius Vollmer
70a072a487 Updated TODO. 2008-10-02 23:01:22 +03:00
Marius Vollmer
ce3b83fabd Updated TODO. 2008-10-02 01:24:44 +03:00
Marius Vollmer
a378cdacb6 Bugfix. 2008-10-02 01:19:23 +03:00
Marius Vollmer
fcfc70c136 Avoid some unnecessary refreshes.
* magit.el (magit-refresh-wrapper): Only revert files and refresh
status buffer when there is at least one buffer in need of refresh.
2008-10-02 01:18:25 +03:00
Marius Vollmer
1f74c1b0c1 Improve log editing.
* magit.el (magit-log-fill-paragraph, magit-log-edit-mode): New, for
better paragraph filling.
(magit-log-edit): Use it.
(magit-add-log): Add entries also for diffs.  Be more careful when
inserting new function sub-entries into existing file entries.
2008-10-02 01:12:32 +03:00
Marius Vollmer
e20322754c Speed up construction of buffers with a lot of sections.
* magit.el (magit-new-section): Collect children in reverse.
(magit-with-section): Reverse them when done.
(magit-refresh-log-buffer): Limit to 1000 commits.
(magit-refresh-reflog-buffer): Likewise.
2008-09-30 23:47:16 +03:00
Marius Vollmer
fcd6bfcaf7 Always refresh the status buffer.
* magit.el (magit-refresh-wrapper): Initialize
magit-refresh-needing-buffers with the status buffer.
(magit-need-refresh): Don't add a buffer twice.
2008-09-29 23:35:39 +03:00
Marius Vollmer
e6e3aa1b3a Added menu.
* magit.el (magit-mode-menu): New.
2008-09-28 02:18:01 +03:00
Marius Vollmer
59aac28585 Updated manual and TODO. 2008-09-27 15:26:09 +03:00
Marius Vollmer
d48fd13d27 Handle revs that don't have a name.
* magit.el (magit-name-rev): Return original rev if name-rev returns
"undefined".  Shouldn't happen, but does.  Bug in git?
2008-09-26 16:10:17 +03:00
Marius Vollmer
e5b55cbce0 Merge branch 'master' of zagadka.vm.bytemark.co.uk:git/magit 2008-09-26 15:49:08 +03:00
Marius Vollmer
3b6c739514 Updated TODO. 2008-09-26 15:48:49 +03:00
Marius Vollmer
0e1d9ddbbb Let magit-status always ask for the directory.
* magit.el (magit-read-top-dir): Removed 'prefix' argument.  Always ask.
2008-09-25 23:21:59 +03:00
Marius Vollmer
efc8ae2a6c Rewritten refresh mechanics.
* magit.el (magit-refresh-buffer): Renamed from magit-refresh, made
non-interactive.
(magit-need-refresh): New.  Call it whenever needed and instead of
magit-refresh and magit-revert-buffers.
(magit-with-refresh): New.
(magit-refresh): Reimplemented using these two.
(magit-section-action): New.  Use it instead of magit-section-case in
commands.
(magit-run*, magit-cherry-pick-commit): Removed norefresh argument.
(magit-run, magit-run-shell): Use magit-with-refresh.
2008-09-21 16:09:11 +03:00
Marius Vollmer
87a437fab9 Prefer symbolic names for default revisions.
* magit.el (magit-name-rev): Do nothing when given nil.
(magit-default-rev): Pass commit thru magit-name-rev.
2008-09-15 02:43:36 +03:00
Marius Vollmer
7853395831 Clean up shell escaping.
* magit.el (magit-shell, magit-shell-lines, magit-shell-exit-code,
magit-run-shell) Escape all format arguments when constructing the
command.  Updated all callers.
2008-09-15 02:37:38 +03:00
Marius Vollmer
e0e9544c09 Updated TODO. 2008-09-15 02:01:58 +03:00
Marius Vollmer
35002f3d31 Refresh buffer when rewrite-finish fails.
* magit.el (magit-rewrite-finish): Refresh after finishing, even when
an error has been thrown.
(magit-rewrite-finish-step): Don't refresh at all.
2008-09-15 01:58:08 +03:00
Marius Vollmer
b68b2171cf Refuse to apply, cherry-pick, or revert a merge commit.
* magit.el (magit-commit-parents): New.
(magit-apply-commit, magit-revert-commit): Fail with merge commits.
(magit-cherry-pick-commit): New.  Fail with merge commits.  Use it everywhere
instead of running git cherry-pick directly.
(magit-cherry-pick, magit-cherry-pick-item): Renamed.
2008-09-15 01:58:01 +03:00