Re: Diff of this page with other version - Mailing list pgsql-www

From Erik Wienhold
Subject Re: Diff of this page with other version
Date
Msg-id w57oncn7cptrcah6kgbn5gdkqfmo3nihsrb2bvcbgpfwpkeixl@dqqdc5f7i5p5
Whole thread Raw
In response to Diff of this page with other version  (Marcos Pegoraro <marcos@f10.com.br>)
Responses Re: Diff of this page with other version
List pgsql-www
On 2024-03-02 15:35 +0100, Marcos Pegoraro wrote:
> I think it is so common to all that it is difficult to see small diffs when
> navigating through doc pages of different versions of the same page. I'm
> not talking about completely new doc pages, like merge.sgml from version 14
> to 15, but those ones which have small diffs on that file. As an example
> consider copy.sgml

+1 for the general idea.

> Version 16 has this text
>     NULL '<replaceable class="parameter">null_string</replaceable>'
>     DEFAULT '<replaceable class="parameter">default_string</replaceable>'
>     HEADER [ <replaceable class="parameter">boolean</replaceable> | MATCH ]
>     QUOTE '<replaceable class="parameter">quote_character</replaceable>'
> 
> But version 15 has this
>     NULL '<replaceable class="parameter">null_string</replaceable>'
>     HEADER [ <replaceable class="parameter">boolean</replaceable> | MATCH ]
>     QUOTE '<replaceable class="parameter">quote_character</replaceable>'
> 
> As you can see, the DEFAULT line was added on version 16, but it is not
> easy to see what was changed on both versions.
> 
> Another example would be SQL/JSON Path Operators And Methods of func.sgml
> of version 16 and devel. There are new methods boolean(), decimal(),
> bigint(), timestamp(), timestamptz() and some others but they are not easy
> to see that they don't exist in version 16 but would be there when version
> 17 comes in.

I think that it's relatively easy to add version info to the <entry>
elements in func.sgml.  But only focusing on additions to the docs
totally misses changes to the text itself which is sometimes reworded
instead of just adding sama paragraphs.

> One can say that I have to read release notes before I upgrade a cluster
> because that page shows all important features and changes between
> versions. But sometimes this is a small info that just shows a better
> understanding of that feature or maybe we have several versions running and
> have doubts of what small feature exists in what version.
> 
> So, it would be interesting if we could visually see what was changed on
> both pages. Then, what I propose is something like you have when using a
> diff tool,  but in a single page, not side by side.
> 
> An easy way to do that would be add on all changed text a tag like
> <span class = "v16" style="background-color:green">Here goes changed or new
> text</span>
> 
> Obviously when a commit is done the committer has to add this span tag to
> that commit, so that part would be colored with green background only if
> page 16 is compared with previous ones.

The HTML is generated from the SGML docs.  So version info has to be
added there.  Or we use some automated tool to get the diff of the
rendered HTML.  W3C has a diff tool[1][2] based on GNU diffutils.  See
[3] for a diff of CREATE TABLE between v15 and v16.

> I know we have to put these tags to all files we already have but this can
> be done with some regex search tool to do this change to all files.

I think you underestimate the effort because the changes are not always
as clear (adding one line) as for copy.sgml as you've shown above.  For
example, if I check create_table.sgml between v15 and v16, I see that
the addition of STORAGE modified an existing line.  So that regex has to
match and wrap just the relevant substring.  When new storage modes are
added we end up with nested version info in order to compare vXX with
pre v16:

    <span class="v16">STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | <span class="vXX">FOOBAR</span>  | DEFAULT
}</span>

> So, would this change on all doc pages be relevant ?
> If you agree with me than we can think if a tool to convert is needed or
> just a search replace is fine.

I recommend looking into [2] as a proof-of-concept.

[1] https://services.w3.org/htmldiff
[2] https://github.com/w3c/htmldiff-ui
[2]
https://services.w3.org/htmldiff?doc1=https%3A%2F%2Fwww.postgresql.org%2Fdocs%2F15%2Fsql-createtable.html&doc2=https%3A%2F%2Fwww.postgresql.org%2Fdocs%2F16%2Fsql-createtable.html

-- 
Erik



pgsql-www by date:

Previous
From: Alvaro Herrera
Date:
Subject: Re: Diff of this page with other version
Next
From: Tom Lane
Date:
Subject: Re: Diff of this page with other version