unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: Dmitry Gutov <dgutov@yandex.ru>
Cc: larsi@gnus.org, juri@jurta.org, emacs-devel@gnu.org
Subject: Re: master 4803fba487 1/2: 'C-x v v' on a diff buffer commits it as a patch (bug#52349)
Date: Tue, 30 Aug 2022 14:25:20 +0300	[thread overview]
Message-ID: <83tu5uug68.fsf@gnu.org> (raw)
In-Reply-To: <e1d748ae-4058-dda6-17f8-811588354d42@yandex.ru> (message from Dmitry Gutov on Mon, 29 Aug 2022 23:36:32 +0300)

> Date: Mon, 29 Aug 2022 23:36:32 +0300
> Cc: larsi@gnus.org, juri@jurta.org, emacs-devel@gnu.org
> From: Dmitry Gutov <dgutov@yandex.ru>
> 
> > The implementation in vc-git.el does this, AFAICT:
> > 
> >    . creates a temporary file
> >    . inserts the patch into the temporary file
> 
> Note that "the patch" will usually be a subset of the current 'git diff' 
> output. But not always (the patch can be additionally modified by hand).

I understand.  But how is this significant?  Doesn't "git apply"
require a valid patch as well?

> This feature is a replacement for the popular workflow 'git add -p; git 
> commit', not for simply committing a patch, which is pretty easy to do 
> already.

Yes, I understand that.

> >    . calls "git apply --cached" on the patch in the temporary file
> >    . deletes the temporary file
> > 
> > This doesn't seem to be very different from invoking Patch on the
> > diffs.  (And using shell-command-on-region avoids the need to
> > explicitly create a temporary file.)
> 
> 'patch < file' edits the working directory. 'git apply --cached' edits 
> the index, keeping the files themselves unchanged.

I'm not sure why is this significant.  Doesn't committing the patch
from the index eventually update the files on disk as well?  And if
not, how is this feature useful? you get a repository where the
contents of the .git/ directory doesn't match the worktree, right?
When is this needed or useful?

> >> Personally I hope we discover some popular extension to Mercurial which
> >> we'll be able to use in the same way as we do Git's index area here. And
> >> then say job well done and keep the less-popular and outdated backends
> >> unsupported.
> > 
> > The index thing being the problem because Git needs to have the
> > changes in the index before you can commit?  Or is there any other
> > reason?
> 
> Index is a solution, not the problem. The problem is other changes being 
> present on disk.

For other changes present on disk, we cam:

  . use the equivalent of the "stash" command, where the VCS supports it
  . otherwise, commit specific files by name, where the VCS supports that
  . otherwise signal an error, asking the user to clean up the tree

> I suppose we could implement a scaled-down version of this feature as a 
> fallback (the one that ensures that there are no existing changes in 
> affected files), but I fear the difference between the backends would 
> trip up the users.

AFAICT, Mercurial, Bazaar, RCS, CVS, and SVN all support committing an
explicit list of files, so dirty working tree shouldn't be a problem
for them.  The first two also have a "stash"-like functionality.

But even if we initially only support this in otherwise clean trees,
it will be a huge advantage vs the current situation, where this
feature is simply not available.



  reply	other threads:[~2022-08-30 11:25 UTC|newest]

Thread overview: 95+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <166171593185.16640.41619657947456727@vcs2.savannah.gnu.org>
     [not found] ` <20220828194533.23A6BC00889@vcs2.savannah.gnu.org>
2022-08-28 21:18   ` master 4803fba487 1/2: 'C-x v v' on a diff buffer commits it as a patch (bug#52349) Sean Whitton
2022-08-29  4:50     ` Manuel Uberti
2022-08-29 16:40     ` Daniel Martín
2022-08-29 14:48   ` Lars Ingebrigtsen
2022-08-29 16:46     ` Eli Zaretskii
2022-08-29 17:05       ` Dmitry Gutov
2022-08-29 17:41         ` Eli Zaretskii
2022-08-29 19:03           ` Tassilo Horn
2022-08-29 19:31             ` Eli Zaretskii
2022-08-29 20:36           ` Dmitry Gutov
2022-08-30 11:25             ` Eli Zaretskii [this message]
2022-08-30 12:35               ` Dmitry Gutov
2022-08-30 13:01                 ` Eli Zaretskii
2022-08-30 13:52                   ` Dmitry Gutov
2022-08-30 16:20                     ` Eli Zaretskii
2022-08-30 17:33                       ` Dmitry Gutov
2022-08-30 16:47                 ` Juri Linkov
2022-08-30 17:05                   ` Eli Zaretskii
2022-08-30 17:11                     ` Dmitry Gutov
2022-08-30 17:37                       ` Eli Zaretskii
2022-08-30 17:39                         ` Dmitry Gutov
2022-08-30 17:18                     ` Juri Linkov
2022-08-30  7:20         ` Juri Linkov
2022-08-30 11:54           ` Eli Zaretskii
2022-08-30 14:49             ` Sean Whitton
2022-08-30 16:39               ` Juri Linkov
2022-08-30 16:45               ` Eli Zaretskii
2022-08-31  2:38                 ` Richard Stallman
2022-08-31 15:48                 ` Jonas Bernoulli
2022-08-31  2:38               ` Richard Stallman
2022-09-01  0:32                 ` Sean Whitton
2022-09-01  0:33                   ` Sean Whitton
2022-08-30 11:56           ` Eli Zaretskii
2022-08-30 12:03           ` Dmitry Gutov
2022-09-01 20:13             ` Dmitry Gutov
2022-08-30 13:25       ` Alfred M. Szmidt
2022-08-30 13:42         ` Po Lu
2022-08-30 14:02           ` Alfred M. Szmidt
2022-10-25 19:22           ` Dmitry Gutov
2022-08-30 14:08         ` Dmitry Gutov
2022-08-30 14:20           ` Alfred M. Szmidt
2022-08-30 14:38             ` Dmitry Gutov
2022-08-30 15:16               ` Stefan Monnier
2022-08-30 15:26                 ` Dmitry Gutov
2022-08-30 15:33                   ` Lars Ingebrigtsen
2022-08-30 15:45                     ` Dmitry Gutov
2022-08-30 15:53                       ` Lars Ingebrigtsen
2022-08-30 18:36                   ` Stefan Monnier
2022-08-30 20:59                     ` Dmitry Gutov
2022-08-30 16:50                 ` Eli Zaretskii
2022-08-31  6:51                   ` Alfred M. Szmidt
2022-08-30 16:37               ` Eli Zaretskii
2022-08-30 16:45                 ` Lars Ingebrigtsen
2022-08-30 17:02                   ` Eli Zaretskii
2022-08-30 17:11                     ` Lars Ingebrigtsen
2022-08-30 17:34                       ` Eli Zaretskii
2022-08-30 17:38                         ` Lars Ingebrigtsen
2022-08-30 19:23                       ` Sean Whitton
2022-08-30 17:10                 ` Dmitry Gutov
2022-08-31  1:28               ` Po Lu
2022-08-31  2:32                 ` Dmitry Gutov
2022-08-31  6:53                   ` Juri Linkov
2022-08-31  9:55                     ` Lars Ingebrigtsen
2022-08-31 10:35                       ` Dmitry Gutov
2022-08-31 10:37                         ` Lars Ingebrigtsen
2022-08-31 11:09                           ` Dmitry Gutov
2022-08-31 15:42                             ` Lars Ingebrigtsen
2022-08-31 16:24                               ` Dmitry Gutov
2022-08-31 16:39                                 ` Lars Ingebrigtsen
2022-08-31 18:02                                   ` Dmitry Gutov
2022-09-01 10:16                                     ` Lars Ingebrigtsen
2022-09-01 11:31                                       ` Dmitry Gutov
2022-09-01 11:45                                         ` Lars Ingebrigtsen
2022-09-01 11:48                                           ` Dmitry Gutov
2022-09-01 11:57                                             ` Eli Zaretskii
2022-10-17  0:11                                             ` Dmitry Gutov
2022-10-17 19:17                                               ` Juri Linkov
2022-09-01 13:26                                           ` Robert Pluim
2022-09-01 13:28                                             ` Dmitry Gutov
2022-09-01 13:32                                               ` Robert Pluim
2022-09-03  2:51                                             ` Richard Stallman
2022-09-04 12:27                                               ` Alfred M. Szmidt
2022-08-31 11:11                     ` Dmitry Gutov
2022-08-31 16:06                       ` Juri Linkov
2022-08-31 16:21                         ` Dmitry Gutov
2022-08-31 16:36                           ` Eli Zaretskii
2022-10-16 23:53                             ` Dmitry Gutov
2022-10-16 23:54                               ` Dmitry Gutov
2022-08-31 16:41                           ` Dmitry Gutov
2022-08-31 11:23                   ` Eli Zaretskii
2022-08-31 11:57                     ` Dmitry Gutov
2022-08-31 12:36                       ` Eli Zaretskii
2022-09-04  7:26         ` Philip Kaludercic
2022-09-04 12:27           ` Alfred M. Szmidt
2022-09-04 17:07             ` Philip Kaludercic

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=83tu5uug68.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=dgutov@yandex.ru \
    --cc=emacs-devel@gnu.org \
    --cc=juri@jurta.org \
    --cc=larsi@gnus.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).