From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Thien-Thi Nguyen Newsgroups: gmane.emacs.devel Subject: Re: Removing rollback from VC mode - request for comment Date: Thu, 11 Dec 2014 13:23:15 +0100 Message-ID: <87fvcm8jf0.fsf@zigzag.favinet> References: <20141211092138.6D5F6C008E@snark.thyrsus.com> <874mt2iksu.fsf@fencepost.gnu.org> Reply-To: emacs-devel@gnu.org NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha1; protocol="application/pgp-signature" X-Trace: ger.gmane.org 1418300380 23231 80.91.229.3 (11 Dec 2014 12:19:40 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 11 Dec 2014 12:19:40 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Dec 11 13:19:32 2014 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Xz2iR-0007Nl-Rs for ged-emacs-devel@m.gmane.org; Thu, 11 Dec 2014 13:19:32 +0100 Original-Received: from localhost ([::1]:50517 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xz2iP-0004Jm-AX for ged-emacs-devel@m.gmane.org; Thu, 11 Dec 2014 07:19:29 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:44015) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xz2iE-0004Je-RD for emacs-devel@gnu.org; Thu, 11 Dec 2014 07:19:24 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Xz2i8-0006Yp-SO for emacs-devel@gnu.org; Thu, 11 Dec 2014 07:19:18 -0500 Original-Received: from smtp209.alice.it ([82.57.200.105]:65101) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xz2i8-0006Yf-HE for emacs-devel@gnu.org; Thu, 11 Dec 2014 07:19:12 -0500 Original-Received: from zigzag.favinet (79.21.64.179) by smtp209.alice.it (8.6.060.28) id 547E3025015C157F for emacs-devel@gnu.org; Thu, 11 Dec 2014 13:19:11 +0100 Original-Received: from ttn by zigzag.favinet with local (Exim 4.80) (envelope-from ) id 1Xz2mD-0008Fq-Fi for emacs-devel@gnu.org; Thu, 11 Dec 2014 13:23:25 +0100 Mail-Followup-To: emacs-devel@gnu.org In-Reply-To: <874mt2iksu.fsf@fencepost.gnu.org> (David Kastrup's message of "Thu, 11 Dec 2014 10:43:13 +0100") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux) X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 82.57.200.105 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:179744 Archived-At: --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable () David Kastrup () Thu, 11 Dec 2014 10:43:13 +0100 > Is it really important to support a VC-mode operation that > experience has shown to generally be a Bad Thing, We are really talking about RCS here. RCS is not usually shared, at least not network-shared. I don't see that experience has shown rollback to be a bad thing for RCS. Experience does not tend to show a lot for RCS anyway these days since few people are still using it. Conceptually, rollback is removing the last commit. In RCS, this is implemented via =E2=80=98rcs -o=E2=80=99 (for "outdate"), which in its general operation can remove a series of consecutive non-tip commits, as well. In Git terms, "RCS outdate" can be likened to both =E2=80=98git reset --hard HEAD~1=E2=80=99 (last commit only) and =E2=80=98git rebase -i=E2=80=99 + manual omission of commits in the list (generally). The =E2=80=98git rebase=E2=80=99 is more powerful because an arbitrary set of commits can be dropped; they need not be consecutive. Anyway, this DAG-dicing is not shooting oneself in the foot if one knows what one's doing. Personally, i prefer VC not to (try to) think for me in this regard. [Already, i am ready to gripe about "always editable" for RCS -- that's wrong and embracing it in the name of progress is unwise. (I'm "ready" but i haven't looked at the new code yet, much less played w/ it, so there's still time to let my angst boil over. :-D)] So, i think "rollback" as a concept is actually not far enough. Being able to select arbitrary commits to drop (like =E2=80=98d=E2=80=99 and =E2=80=98x=E2=80=99 in Dired) is what i'd like to s= ee, in its stead. Another idea is to modify the "rollback" concept to leave the working files "as-is" but remove the commit from the repo. For RCS, this would be =E2=80=98co -p ; rcs -o ; mv=E2=80=99 (roughly), and for Git this would be =E2=80=98git reset --mixed HEAD~1=E2=80=99. On second thought, using the same name w/ different meaning is indeed a foot-shooting move, so maybe "step back" is what we want. If we add "step back", then we can keep "rollback" as an optional mode of operation (via =E2=80=98C-u=E2=80=99). Or "rollback" can take =E2=80=98C-u=E2=80=99 to mean "step back". Or there could be a variab= le to control things. Etc. > simply to preserve backward compatibility? How do we > evaluate tradeoffs when a featurectomy would reduce > maintenance burden and possibly improve the quality of > support for new systems? I think that rollback may make sense in RCS-based workflows. But I don't think that this should be VC's problem. VC does not provide every functionality for every version control system, so think we should be fine removing rollback from VC. VC does not support every Git functionality either: if it is really important to people, it can be reimplemented in some RCS-specific mode/feature/library/command set. I think if we can extend "rollback" to do something useful, that would be best. Dropping features is liberating for the programmer but unkind for the user. Being unkind to the old and ugly is particularly lamentable. =2D-=20 Thien-Thi Nguyen GPG key: 4C807502 (if you're human and you know it) read my lisp: (responsep (questions 'technical) (not (via 'mailing-list))) =3D> nil --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) iEYEARECAAYFAlSJjLYACgkQZwMiJEyAdQLDhwCfYy/CMx1OXU7Vvd2ZV/Rkaeot bd0AniRD6zCbHHQJWsm21PjCBUhIG2sU =iWsi -----END PGP SIGNATURE----- --=-=-=--