From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Samuel Wales Newsgroups: gmane.emacs.tangents Subject: Re: diff-mode merge tool for e.g. filesystem trees Date: Sat, 3 Sep 2022 22:15:59 -0700 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="10754"; mail-complaints-to="usenet@ciao.gmane.io" To: emacs-tangents@gnu.org Original-X-From: emacs-tangents-bounces+get-emacs-tangents=m.gmane-mx.org@gnu.org Sun Sep 04 07:16:53 2022 Return-path: Envelope-to: get-emacs-tangents@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oUi04-0002cC-Td for get-emacs-tangents@m.gmane-mx.org; Sun, 04 Sep 2022 07:16:52 +0200 Original-Received: from localhost ([::1]:59940 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oUi03-0003yH-An for get-emacs-tangents@m.gmane-mx.org; Sun, 04 Sep 2022 01:16:51 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:40374) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oUhzL-0003vy-H2 for emacs-tangents@gnu.org; Sun, 04 Sep 2022 01:16:10 -0400 Original-Received: from mail-lj1-x229.google.com ([2a00:1450:4864:20::229]:36600) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oUhzJ-00039H-EX for emacs-tangents@gnu.org; Sun, 04 Sep 2022 01:16:07 -0400 Original-Received: by mail-lj1-x229.google.com with SMTP id z20so6193586ljq.3 for ; Sat, 03 Sep 2022 22:16:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:message-id:date:from:references:in-reply-to:mime-version :from:to:cc:subject:date; bh=RrcI7vVgxgTlRgGrU3r3NRhbVNcOAR8kzLZDRLeEeyU=; b=Jbgcm5Uoj8HGBr6kjGKymFagDYXJcnozHgMKlCu5S3qbQyBcK6wuJTEyhx76eThb8c jx+i2Cc290ho3i3XbPLJf0rFun3Mt0fKRkdMIQXKvdTA4q6MJUZ6z/tui5aSJloGjx/x i/BK9nhVDCCmHamhnghDuj8Hkl/BQuaSgEP9TQokdoUCd/FKQzLF2pZP/XdiwQZnjNkY DzECqxn3Rv1axjgoMZIRK7Ld6GEIXFQyPsQaGmUWChFiZ3b25LSuif1rNubZU9JBsQ+Y S3ewvScFqMGroAiE80TLVDGypux1nLYPMH1yc0uxQUy+H6E30AiwwfRJiw2CNSxs5som qpdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:references:in-reply-to:mime-version :x-gm-message-state:from:to:cc:subject:date; bh=RrcI7vVgxgTlRgGrU3r3NRhbVNcOAR8kzLZDRLeEeyU=; b=uV+6tkHw9G+LPHn60fdEX4MvpkMHjvCV5BnYLlgTCkbCR/Z09KdqEyk6o96AbDR+Dc +B9xobMQ4v0zFkhGLdtWxlJ+BVzSbDdLmD8Kr+t9APgFX8yJLBHitVxbzMgiGaNNRFyI H7Ek6m4OhbYGHrZUOKeT4Pigpb2xW+ITGAmrLt76Cg9jWImtOsIfp5GjvQPhSOddHQww XzICRlJbr5q1zlAy6IU/MgQh39Z8Y1Y4jEiis3GaiL3lj28BnU1MMc5cXwe1rLReIA10 Nwr9yhnoJaNPdg2dHR9XfwL7kl4rwAC06+kSYsqszVSEzYvfE7KkzeiRinb5WIXRvCjI vgRg== X-Gm-Message-State: ACgBeo2Inuuz735u123nXkZp/URnIa6JLf/32KXUpl6xFsqVBfjlTtqQ VZMqC9dHdrXtKb9tdPjo2N+5S5LUnNWH50oqLG7RlpNkjFp+KA== X-Google-Smtp-Source: AA6agR7o4LhT2z/F+bISK6elBNDziwbg/eh/ZdZfal8XMHH1eCXq+dAijn3U5aiEUcV0+UrNq2rjuU3njiDT0hL8LiU= X-Received: by 2002:a2e:90d3:0:b0:264:bdf4:82d with SMTP id o19-20020a2e90d3000000b00264bdf4082dmr9658394ljg.208.1662268560538; Sat, 03 Sep 2022 22:16:00 -0700 (PDT) Original-Received: by 2002:a05:6520:709:b0:215:af4a:870d with HTTP; Sat, 3 Sep 2022 22:15:59 -0700 (PDT) In-Reply-To: Received-SPF: pass client-ip=2a00:1450:4864:20::229; envelope-from=samologist@gmail.com; helo=mail-lj1-x229.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-tangents@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Emacs news and miscellaneous discussions outside the scope of other Emacs mailing lists List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-tangents-bounces+get-emacs-tangents=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-tangents" Xref: news.gmane.io gmane.emacs.tangents:913 Archived-At: and i discovered the name just after pressing send. the thing i recall is probably diffsync.el. it is very different from my design. On 9/3/22, Samuel Wales wrote: > i seem to recall a package flew by that merges files using diff mode. > i can't seem to find it anywhere. anybody recall? > > i was interested because i once designed a filesystem tree differ and > thought perhaps the new package could too. > > i vaguely recall that both the new package and my design use the diff > gutter for marks. both view fs trees as text. > > > p.s. fwiw, here are my notes on /my/ design. i don't know the new > package. > > for unrelated reasons i cannot implement this. just a design. > anybody is very welcome to of course. > > === > > pathnames are after the first tab. metadata can be > displayed before the first tab. > > for example: > > "---rw-r--r--,34668 ./boot/grub/gcry_camellia.mod" > "+--rw-r--r--,5 ./boot/grub/gcry_camellia.mod" > > you can perform operations. > > operations only apply to the b tree. that is, unlike most > mergers, we are not trying to modify a, but instead make b > perfect. > > === > > operations on dirs will apply to everything under them also. > operations on - or + will apply to the opposite also. > > - k :: dim with `' > - ' :: delete dimmed and context > - \ :: ediff -+ using my algo > > - d :: mark delete in b > - e :: mark ediff a b files > - c :: mark copy a to b > > - u :: unmark > - U :: unmark > > - x :: execute > - s :: put a shell script in a new buffer > > advanced: > > - t :: dim stuff underneath (act as a truncating differ > like diff -ur) > - ? :: dim not in both > - ? :: dim all in both > - ? :: reduce dirname (see command) > ********* REF use case: merging a SUBSET into an older full fileset > > this is an example of a problem we are trying to solve using > these merging capabilities. > > === > > suppose you back up your computer nightly. but the backup > drive is too small, so you only backup a SUBSET of your files. > > then your computer crashes. you start running from SUBSET. > you do not have access to your ORIGINAL (a.k.a. the FULL > FILESET) because ORIGINAL is on internal drives that cannot > be physically extracted. > > you make a lot of changes to what started out as SUBSET. > > you finally get access to ORIGINAL. now merge SUBSET into > ORIGINAL so that you get full set of files with your > changes. this is the problem we try to solve. > -- The Kafka Pandemic A blog about science, health, human rights, and misopathy: https://thekafkapandemic.blogspot.com