unofficial mirror of emacs-tangents@gnu.org
 help / color / mirror / Atom feed
From: Samuel Wales <samologist@gmail.com>
To: emacs-tangents@gnu.org
Subject: diff-mode merge tool for e.g. filesystem trees
Date: Sat, 3 Sep 2022 22:06:41 -0700	[thread overview]
Message-ID: <CAJcAo8s7_Lu-9Ah=kA8b6AL7LrSvT9KwU7WvKpLT1rOV_WVQNQ@mail.gmail.com> (raw)

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.



             reply	other threads:[~2022-09-04  5:06 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-04  5:06 Samuel Wales [this message]
2022-09-04  5:15 ` diff-mode merge tool for e.g. filesystem trees Samuel Wales
2022-09-04  6:15   ` Emanuel Berg

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='CAJcAo8s7_Lu-9Ah=kA8b6AL7LrSvT9KwU7WvKpLT1rOV_WVQNQ@mail.gmail.com' \
    --to=samologist@gmail.com \
    --cc=emacs-tangents@gnu.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.
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).