Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package riff for openSUSE:Factory checked in at 2024-10-11 17:03:02 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/riff (Old) and /work/SRC/openSUSE:Factory/.riff.new.19354 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "riff" Fri Oct 11 17:03:02 2024 rev:17 rq:1207061 version:3.3.4 Changes: -------- --- /work/SRC/openSUSE:Factory/riff/riff.changes 2024-10-07 21:52:31.594990585 +0200 +++ /work/SRC/openSUSE:Factory/.riff.new.19354/riff.changes 2024-10-11 17:03:40.274094181 +0200 @@ -1,0 +2,9 @@ +Fri Oct 11 06:59:00 UTC 2024 - Michael Vetter <mvet...@suse.com> + +- Update to 3.3.4: + * Both by clearly highlighting the markers, and by improving how + we color the conflicting areas themselves. + * And remember: "git config --global merge.conflictstyle diff3" + is your friend! + +------------------------------------------------------------------- Old: ---- riff-3.3.3.tar.zst New: ---- riff-3.3.4.tar.zst ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ riff.spec ++++++ --- /var/tmp/diff_new_pack.M6MkDR/_old 2024-10-11 17:03:40.950122291 +0200 +++ /var/tmp/diff_new_pack.M6MkDR/_new 2024-10-11 17:03:40.954122458 +0200 @@ -17,7 +17,7 @@ Name: riff -Version: 3.3.3 +Version: 3.3.4 Release: 0 Summary: A diff filter highlighting which line parts have changed License: MIT ++++++ _service ++++++ --- /var/tmp/diff_new_pack.M6MkDR/_old 2024-10-11 17:03:40.986123788 +0200 +++ /var/tmp/diff_new_pack.M6MkDR/_new 2024-10-11 17:03:40.990123955 +0200 @@ -3,7 +3,7 @@ <param name="url">https://github.com/walles/riff.git</param> <param name="versionformat">@PARENT_TAG@</param> <param name="scm">git</param> - <param name="revision">3.3.3</param> + <param name="revision">3.3.4</param> <param name="match-tag">*</param> <param name="versionrewrite-pattern">v(\d+\.\d+\.\d+)</param> <param name="versionrewrite-replacement">\1</param> ++++++ riff-3.3.3.tar.zst -> riff-3.3.4.tar.zst ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/riff-3.3.3/Cargo.lock new/riff-3.3.4/Cargo.lock --- old/riff-3.3.3/Cargo.lock 2024-10-06 08:25:58.000000000 +0200 +++ new/riff-3.3.4/Cargo.lock 2024-10-10 17:14:59.000000000 +0200 @@ -408,7 +408,7 @@ [[package]] name = "riffdiff" -version = "3.3.3" +version = "3.3.4" dependencies = [ "backtrace", "bytecount", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/riff-3.3.3/Cargo.toml new/riff-3.3.4/Cargo.toml --- old/riff-3.3.3/Cargo.toml 2024-10-06 08:25:58.000000000 +0200 +++ new/riff-3.3.4/Cargo.toml 2024-10-10 17:14:59.000000000 +0200 @@ -2,7 +2,7 @@ [package] name = "riffdiff" # Actually "riff", but that was already taken on crates.io -version = "3.3.3" +version = "3.3.4" authors = ["Johan Walles <johan.wal...@gmail.com>"] edition = "2018" repository = "https://github.com/walles/riff/" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/riff-3.3.3/SCREENSHOTS.md new/riff-3.3.4/SCREENSHOTS.md --- old/riff-3.3.3/SCREENSHOTS.md 2024-10-06 08:25:58.000000000 +0200 +++ new/riff-3.3.4/SCREENSHOTS.md 2024-10-10 17:14:59.000000000 +0200 @@ -1,8 +1,11 @@ -To update `screenshot-git-merge.png`, you should be running -[iTerm2](https://iterm2.com/) and have [`moar`](https://github.com/walles/moar) -as your pager. +# Screenshot updating instructions -Then: +Screenshots are done using: + +- Terminal: [iTerm2](https://iterm2.com/) +- Pager: [`moar`](https://github.com/walles/moar) + +## `screenshot-git-merge.png` 1. Scale your terminal window to 65x17 2. Copy the below example to the clipboard @@ -25,3 +28,9 @@ hello() ``` + +## `screenshot-diff2-conflict.png` + +1. Scale your window to 72x10 +2. `cargo run < testdata/conflict-markers.txt.riff-output` +3. Screenshot the window and store it as `screenshot-diff2-conflict.png` Binary files old/riff-3.3.3/screenshot-diff2-conflict.png and new/riff-3.3.4/screenshot-diff2-conflict.png differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/riff-3.3.3/src/conflicts_highlighter.rs new/riff-3.3.4/src/conflicts_highlighter.rs --- old/riff-3.3.3/src/conflicts_highlighter.rs 2024-10-06 08:25:58.000000000 +0200 +++ new/riff-3.3.4/src/conflicts_highlighter.rs 2024-10-10 17:14:59.000000000 +0200 @@ -2,11 +2,11 @@ use threadpool::ThreadPool; -use crate::constants::{GREEN, NORMAL}; +use crate::constants::{GREEN, INVERSE_VIDEO, NORMAL}; use crate::lines_highlighter::{LineAcceptance, LinesHighlighter, Response}; use crate::string_future::StringFuture; -use crate::token_collector::{Style, LINE_STYLE_OLD}; -use crate::token_collector::{LINE_STYLE_CONFLICT_BASE, LINE_STYLE_NEW}; +use crate::token_collector::{Style, LINE_STYLE_CONFLICT_OLD}; +use crate::token_collector::{LINE_STYLE_CONFLICT_BASE, LINE_STYLE_CONFLICT_NEW}; use crate::{refiner, token_collector}; const CONFLICTS_HEADER1: &str = "<<<<<<<"; @@ -172,9 +172,9 @@ } let (header_prefix, c1_prefix, c2_prefix, reset) = if self.c1_header.starts_with("++") { - (GREEN, " +", "+ ", NORMAL) + (INVERSE_VIDEO, " +", "+ ", NORMAL) } else { - ("", "", "", "") + (INVERSE_VIDEO, "", "", "") }; let c1_header = self.c1_header.clone(); @@ -188,16 +188,16 @@ let c1_or_newline = if c1.is_empty() { "\n" } else { &c1 }; let c2_or_newline = if c2.is_empty() { "\n" } else { &c2 }; let (c1_tokens, c2_tokens, _, _) = - refiner::to_highlighted_tokens(c1_or_newline, c2_or_newline, false); + refiner::to_highlighted_tokens(c1_or_newline, c2_or_newline, true); let c1_style = if base_header.is_empty() { - LINE_STYLE_OLD + LINE_STYLE_CONFLICT_OLD } else { - LINE_STYLE_NEW + LINE_STYLE_CONFLICT_NEW }; let highlighted_c1 = token_collector::render(&c1_style, c1_prefix, &c1_tokens); let highlighted_c2 = - token_collector::render(&LINE_STYLE_NEW, c2_prefix, &c2_tokens); + token_collector::render(&LINE_STYLE_CONFLICT_NEW, c2_prefix, &c2_tokens); let mut rendered = String::new(); rendered.push_str(header_prefix); @@ -242,9 +242,9 @@ fn render_diff3(&self, thread_pool: &ThreadPool) -> StringFuture { let (header_prefix, c1_prefix, base_prefix, c2_prefix, reset) = if self.c1_header.starts_with("++") { - (GREEN, " +", "++", "+ ", NORMAL) + (INVERSE_VIDEO, " +", "++", "+ ", NORMAL) } else { - ("", "", "", "", "") + (INVERSE_VIDEO, "", "", "", "") }; assert!(!self.base.is_empty()); @@ -266,13 +266,11 @@ if c1.is_empty() { // In the base, show only diffs vs c2 base_vs_c1_tokens.iter_mut().for_each(|token| { - if token.style == Style::HighlightedChange { - token.style = Style::Plain; - } + token.style = Style::Context; }); } let highlighted_c1 = - token_collector::render(&LINE_STYLE_NEW, c1_prefix, &c1_tokens); + token_collector::render(&LINE_STYLE_CONFLICT_NEW, c1_prefix, &c1_tokens); let c2_or_newline = if c2.is_empty() { "\n" } else { &c2 }; let (mut base_vs_c2_tokens, c2_tokens, _, _) = @@ -280,13 +278,11 @@ if c2.is_empty() { // In the base, show only diffs vs c1 base_vs_c2_tokens.iter_mut().for_each(|token| { - if token.style == Style::HighlightedChange { - token.style = Style::Plain; - } + token.style = Style::Context; }); } let highlighted_c2 = - token_collector::render(&LINE_STYLE_NEW, c2_prefix, &c2_tokens); + token_collector::render(&LINE_STYLE_CONFLICT_NEW, c2_prefix, &c2_tokens); assert_eq!(base_vs_c1_tokens.len(), base_vs_c2_tokens.len()); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/riff-3.3.3/src/refiner.rs new/riff-3.3.4/src/refiner.rs --- old/riff-3.3.3/src/refiner.rs 2024-10-06 08:25:58.000000000 +0200 +++ new/riff-3.3.4/src/refiner.rs 2024-10-10 17:14:59.000000000 +0200 @@ -199,7 +199,7 @@ pub fn to_highlighted_tokens( old_text: &str, new_text: &str, - is_three_way_conflict: bool, + is_conflict: bool, ) -> (Vec<StyledToken>, Vec<StyledToken>, bool, bool) { // Find diffs between adds and removals let mut old_tokens = Vec::new(); @@ -310,10 +310,13 @@ // Refine old tokens highlighting bridge_consecutive_highlighted_tokens(&mut old_tokens); + if is_conflict { + contextualize_unhighlighted_lines(&mut old_tokens); + } // Refine new tokens highlighting bridge_consecutive_highlighted_tokens(&mut new_tokens); - if is_three_way_conflict { + if is_conflict { contextualize_unhighlighted_lines(&mut new_tokens); } errorlight_trailing_whitespace(&mut new_tokens); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/riff-3.3.3/src/token_collector.rs new/riff-3.3.4/src/token_collector.rs --- old/riff-3.3.3/src/token_collector.rs 2024-10-06 08:25:58.000000000 +0200 +++ new/riff-3.3.4/src/token_collector.rs 2024-10-10 17:14:59.000000000 +0200 @@ -117,9 +117,29 @@ pub(crate) const LINE_STYLE_CONFLICT_BASE: LineStyle = { LineStyle { prefix_style: AnsiStyle { + inverse: true, + weight: Weight::Normal, + color: Default, + }, + plain_style: AnsiStyle { inverse: false, weight: Weight::Normal, - color: Green, + color: Red, + }, + highlighted_style: AnsiStyle { + inverse: true, + weight: Weight::Normal, + color: Red, + }, + } +}; + +pub(crate) const LINE_STYLE_CONFLICT_OLD: LineStyle = { + LineStyle { + prefix_style: AnsiStyle { + inverse: true, + weight: Weight::Normal, + color: Default, }, plain_style: AnsiStyle { inverse: false, @@ -133,6 +153,26 @@ }, } }; + +pub(crate) const LINE_STYLE_CONFLICT_NEW: LineStyle = { + LineStyle { + prefix_style: AnsiStyle { + inverse: true, + weight: Weight::Normal, + color: Default, + }, + plain_style: AnsiStyle { + inverse: false, + weight: Weight::Normal, + color: Green, + }, + highlighted_style: AnsiStyle { + inverse: true, + weight: Weight::Normal, + color: Green, + }, + } +}; pub(crate) const LINE_STYLE_OLD_FILENAME: LineStyle = { LineStyle { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/riff-3.3.3/testdata/conflict-markers-diff3-baseless.txt.riff-output new/riff-3.3.4/testdata/conflict-markers-diff3-baseless.txt.riff-output --- old/riff-3.3.3/testdata/conflict-markers-diff3-baseless.txt.riff-output 2024-10-06 08:25:58.000000000 +0200 +++ new/riff-3.3.4/testdata/conflict-markers-diff3-baseless.txt.riff-output 2024-10-10 17:14:59.000000000 +0200 @@ -1,8 +1,8 @@ This is an example of git conflict markers. -<<<<<<< HEAD -[32mThis line was added on the [7mmain[27m branch.[0m -||||||| 07ffb9b -======= -[32mThis line was added on the [7mbranch named "[27mbranch[7m"[27m.[0m ->>>>>>> branch +[7m<<<<<<< HEAD +[7m[27m[32mThis line was added on the [7mmain[27m branch.[0m +[7m||||||| 07ffb9b +[7m======= +[7m[27m[32mThis line was added on the [7mbranch named "[27mbranch[7m"[27m.[0m +[7m>>>>>>> branch diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/riff-3.3.3/testdata/conflict-markers-diff3-removed.txt.riff-output new/riff-3.3.4/testdata/conflict-markers-diff3-removed.txt.riff-output --- old/riff-3.3.3/testdata/conflict-markers-diff3-removed.txt.riff-output 2024-10-06 08:25:58.000000000 +0200 +++ new/riff-3.3.4/testdata/conflict-markers-diff3-removed.txt.riff-output 2024-10-10 17:14:59.000000000 +0200 @@ -1,8 +1,8 @@ This is an example of git conflict markers. -<<<<<<< HEAD -[32mThis line is [7mchanged[27m on the main branch.[0m -||||||| 07ffb9b -[32m[31mThis line is [7mfrom the initial commit[27m on the main branch.[0m -======= ->>>>>>> branch +[7m<<<<<<< HEAD +[7m[27m[32mThis line is [7mchanged[27m on the main branch.[0m +[7m||||||| 07ffb9b +[7m[27m[31mThis line is [7mfrom the initial commit[27m on the main branch.[0m +[7m======= +[7m>>>>>>> branch diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/riff-3.3.3/testdata/conflict-markers-diff3.txt.riff-output new/riff-3.3.4/testdata/conflict-markers-diff3.txt.riff-output --- old/riff-3.3.3/testdata/conflict-markers-diff3.txt.riff-output 2024-10-06 08:25:58.000000000 +0200 +++ new/riff-3.3.4/testdata/conflict-markers-diff3.txt.riff-output 2024-10-10 17:14:59.000000000 +0200 @@ -1,9 +1,9 @@ This is an example of git conflict markers. -<<<<<<< HEAD -[32mThis line is [7mchanged[27m on the main branch.[0m -||||||| 07ffb9b -[32m[31mThis line is [7mfrom the initial commit on the main [27mbranch.[0m -======= -[32mThis line is from the [7mbranch named "[27mbranch[7m"[27m.[0m ->>>>>>> branch +[7m<<<<<<< HEAD +[7m[27m[32mThis line is [7mchanged[27m on the main branch.[0m +[7m||||||| 07ffb9b +[7m[27m[31mThis line is [7mfrom the initial commit on the main [27mbranch.[0m +[7m======= +[7m[27m[32mThis line is from the [7mbranch named "[27mbranch[7m"[27m.[0m +[7m>>>>>>> branch diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/riff-3.3.3/testdata/conflict-markers.txt.riff-output new/riff-3.3.4/testdata/conflict-markers.txt.riff-output --- old/riff-3.3.3/testdata/conflict-markers.txt.riff-output 2024-10-06 08:25:58.000000000 +0200 +++ new/riff-3.3.4/testdata/conflict-markers.txt.riff-output 2024-10-10 17:14:59.000000000 +0200 @@ -1,7 +1,7 @@ This is an example of git conflict markers. -<<<<<<< HEAD -[31mThis line is [7mchanged on[27m the [7mmain[27m branch.[0m -======= -[32mThis line is [7mfrom[27m the [7mbranch named "[27mbranch[7m"[27m.[0m ->>>>>>> branch +[7m<<<<<<< HEAD +[7m[27m[31mThis line is [7mchanged on[27m the [7mmain[27m branch.[0m +[7m======= +[7m[27m[32mThis line is [7mfrom[27m the [7mbranch named "[27mbranch[7m"[27m.[0m +[7m>>>>>>> branch diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/riff-3.3.3/testdata/conflict-with-context.riff-output new/riff-3.3.4/testdata/conflict-with-context.riff-output --- old/riff-3.3.3/testdata/conflict-with-context.riff-output 2024-10-06 08:25:58.000000000 +0200 +++ new/riff-3.3.4/testdata/conflict-with-context.riff-output 2024-10-10 17:14:59.000000000 +0200 @@ -6,79 +6,79 @@ "github.com/walles/moar/m/linenumbers" ) -[32m++<<<<<<< HEAD[0m -[32m +[0mfunc (p *Pager) scrollToSearchHits() { -[32m +[0m if p.searchPattern == nil { -[32m +[0m // This is not a search -[32m +[0m return -[32m +[0m } -[32m +[0m -[32m + [7mlineNumber[27m := p.scrollPosition.lineNumber(p)[0m -[32m + if lineNumber == nil {[0m -[32m + // No lines to search[0m -[32m + return[0m -[32m + }[0m -[32m +[0m -[32m + firstHitPosition := p.findFirstHit(*lineNumber, nil, false)[0m -[32m + if firstHitPosition == nil [7m&& (*lineNumber != linenumbers.LineNumber{}) [27m{[0m -[32m +[0m // Try again from the top -[32m +[0m firstHitPosition = p.findFirstHit(linenumbers.LineNumber{}, lineNumber, false) -[32m +[0m } -[32m +[0m if firstHitPosition == nil { -[32m +[0m // No match, give up -[32m +[0m return -[32m +[0m } -[32m +[0m -[32m +[0m if firstHitPosition.isVisible(p) { -[32m +[0m // Already on-screen, never mind -[32m +[0m return -[32m +[0m } -[32m +[0m -[32m +[0m p.scrollPosition = *firstHitPosition -[32m +[0m} -[32m +[0m -[32m +// NOTE: When we search, we do that by looping over the *input lines*, not[7m the[0m -[32m +// screen lines. That's why [7mstartPosition is[27m a [7mLineNumber[27m rather than a[0m -[32m +// scrollPosition.[0m -[32m +//[0m -[32m +// The `beforePosition` parameter is exclusive, meaning that line will not be[0m -[32m +// searched.[0m -[32m +//[0m -[32m +// For the actual searching, this method will call _findFirstHit() in parallel[0m -[32m +// on multiple cores, to help large file search performance.[0m -[32m++||||||| parent of b835e9a (Fix the warnings)[0m -[32m++[31mfunc (p *Pager) scrollToSearchHits() {[0m -[32m++[31m if p.searchPattern == nil {[0m -[32m++[31m // This is not a search[0m -[32m++[31m return[0m -[32m++[31m }[0m -[32m++[0m -[32m++[31m [7mfirstHitPosition[27m := p.[7mfindFirstHit(*p.[27mscrollPosition.lineNumber(p), nil, false)[0m -[32m++[31m if firstHitPosition == nil {[0m -[32m++[31m // Try again from the top[0m -[32m++[31m firstHitPosition = p.findFirstHit(linenumbers.LineNumber{}, [7mp.scrollPosition.[27mlineNumber[7m(p)[27m, false)[0m -[32m++[31m }[0m -[32m++[31m if firstHitPosition == nil {[0m -[32m++[31m // No match, give up[0m -[32m++[31m return[0m -[32m++[31m }[0m -[32m++[0m -[32m++[31m if firstHitPosition.isVisible(p) {[0m -[32m++[31m // Already on-screen, never mind[0m -[32m++[31m return[0m -[32m++[31m }[0m -[32m++[0m -[32m++[31m p.scrollPosition = *firstHitPosition[0m -[32m++[31m}[0m -[32m++[0m -[32m++[31m// NOTE: When we search, we do that by looping over the *input lines*, not[0m -[32m++[31m//[7m the[27m screen lines. That's why [7mwe're using[27m a[7m line number[27m rather than a[0m -[32m++[31m// scrollPosition for searching.[0m -[32m++=======[0m -[32m+ [0m// NOTE: When we search, we do that by looping over the *input lines*, not -[32m+ [0m// the screen lines. That's why we're using a line number rather than a -[32m+ [0m// scrollPosition for searching. -[32m++>>>>>>> b835e9a (Fix the warnings)[0m +[7m++<<<<<<< HEAD[0m +[7m +[0mfunc (p *Pager) scrollToSearchHits() { +[7m +[0m if p.searchPattern == nil { +[7m +[0m // This is not a search +[7m +[0m return +[7m +[0m } +[7m +[0m +[7m +[27m[32m [7mlineNumber[27m := p.scrollPosition.lineNumber(p)[0m +[7m +[27m[32m if lineNumber == nil {[0m +[7m +[27m[32m // No lines to search[0m +[7m +[27m[32m return[0m +[7m +[27m[32m }[0m +[7m +[0m +[7m +[27m[32m firstHitPosition := p.findFirstHit(*lineNumber, nil, false)[0m +[7m +[27m[32m if firstHitPosition == nil [7m&& (*lineNumber != linenumbers.LineNumber{}) [27m{[0m +[7m +[0m // Try again from the top +[7m +[0m firstHitPosition = p.findFirstHit(linenumbers.LineNumber{}, lineNumber, false) +[7m +[0m } +[7m +[0m if firstHitPosition == nil { +[7m +[0m // No match, give up +[7m +[0m return +[7m +[0m } +[7m +[0m +[7m +[0m if firstHitPosition.isVisible(p) { +[7m +[0m // Already on-screen, never mind +[7m +[0m return +[7m +[0m } +[7m +[0m +[7m +[0m p.scrollPosition = *firstHitPosition +[7m +[0m} +[7m +[0m +[7m +[27m[32m// NOTE: When we search, we do that by looping over the *input lines*, not[7m the[0m +[7m +[27m[32m// screen lines. That's why [7mstartPosition is[27m a [7mLineNumber[27m rather than a[0m +[7m +[27m[32m// scrollPosition.[0m +[7m +[27m[32m//[0m +[7m +[27m[32m// The `beforePosition` parameter is exclusive, meaning that line will not be[0m +[7m +[27m[32m// searched.[0m +[7m +[27m[32m//[0m +[7m +[27m[32m// For the actual searching, this method will call _findFirstHit() in parallel[0m +[7m +[27m[32m// on multiple cores, to help large file search performance.[0m +[7m++||||||| parent of b835e9a (Fix the warnings)[0m +[7m++[27m[31mfunc (p *Pager) scrollToSearchHits() {[0m +[7m++[27m[31m if p.searchPattern == nil {[0m +[7m++[27m[31m // This is not a search[0m +[7m++[27m[31m return[0m +[7m++[27m[31m }[0m +[7m++[0m +[7m++[27m[31m [7mfirstHitPosition[27m := p.[7mfindFirstHit(*p.[27mscrollPosition.lineNumber(p), nil, false)[0m +[7m++[27m[31m if firstHitPosition == nil {[0m +[7m++[27m[31m // Try again from the top[0m +[7m++[27m[31m firstHitPosition = p.findFirstHit(linenumbers.LineNumber{}, [7mp.scrollPosition.[27mlineNumber[7m(p)[27m, false)[0m +[7m++[27m[31m }[0m +[7m++[27m[31m if firstHitPosition == nil {[0m +[7m++[27m[31m // No match, give up[0m +[7m++[27m[31m return[0m +[7m++[27m[31m }[0m +[7m++[0m +[7m++[27m[31m if firstHitPosition.isVisible(p) {[0m +[7m++[27m[31m // Already on-screen, never mind[0m +[7m++[27m[31m return[0m +[7m++[27m[31m }[0m +[7m++[0m +[7m++[27m[31m p.scrollPosition = *firstHitPosition[0m +[7m++[27m[31m}[0m +[7m++[0m +[7m++[0m// NOTE: When we search, we do that by looping over the *input lines*, not +[7m++[27m[31m//[7m the[27m screen lines. That's why [7mwe're using[27m a[7m line number[27m rather than a[0m +[7m++[27m[31m// scrollPosition for searching.[0m +[7m++=======[0m +[7m+ [0m// NOTE: When we search, we do that by looping over the *input lines*, not +[7m+ [0m// the screen lines. That's why we're using a line number rather than a +[7m+ [0m// scrollPosition for searching. +[7m++>>>>>>> b835e9a (Fix the warnings)[0m // // FIXME: We should take startPosition.deltaScreenLines into account as well! func (p *Pager) findFirstHit(startPosition linenumbers.LineNumber, beforePosition *linenumbers.LineNumber, backwards bool) *scrollPosition { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/riff-3.3.3/testdata/git-diff-conflict-diff3-edit-remove.diff new/riff-3.3.4/testdata/git-diff-conflict-diff3-edit-remove.diff --- old/riff-3.3.3/testdata/git-diff-conflict-diff3-edit-remove.diff 1970-01-01 01:00:00.000000000 +0100 +++ new/riff-3.3.4/testdata/git-diff-conflict-diff3-edit-remove.diff 2024-10-10 17:14:59.000000000 +0200 @@ -0,0 +1,16 @@ +diff --cc lines.txt +index 97515f1,f42366c..0000000 +--- lines.txt ++++ lines.txt +@@@ -1,3 -1,6 +1,11 @@@ + First line +++<<<<<<< HEAD +++||||||| 3b5ce9b +++Caesar +++======= ++ Adam ++ Bertil ++ Caesar +++>>>>>>> branch + Last line + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/riff-3.3.3/testdata/git-diff-conflict-diff3-edit-remove.riff-output new/riff-3.3.4/testdata/git-diff-conflict-diff3-edit-remove.riff-output --- old/riff-3.3.3/testdata/git-diff-conflict-diff3-edit-remove.riff-output 1970-01-01 01:00:00.000000000 +0100 +++ new/riff-3.3.4/testdata/git-diff-conflict-diff3-edit-remove.riff-output 2024-10-10 17:14:59.000000000 +0200 @@ -0,0 +1,16 @@ +[2mdiff --cc lines.txt[0m +[2mindex 97515f1,f42366c..0000000[0m +[1m--- lines.txt[0m +[1m+++ lines.txt[0m +[36m@@@ -1,3 -1,6 +1,11 @@@[0m + First line +[7m++<<<<<<< HEAD[0m +[7m++||||||| 3b5ce9b[0m +[7m++[0mCaesar +[7m++=======[0m +[7m+ [27m[32mAdam[0m +[7m+ [27m[32mBertil[0m +[7m+ [0mCaesar +[7m++>>>>>>> branch[0m + Last line + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/riff-3.3.3/testdata/git-diff-conflict-diff3.riff-output new/riff-3.3.4/testdata/git-diff-conflict-diff3.riff-output --- old/riff-3.3.3/testdata/git-diff-conflict-diff3.riff-output 2024-10-06 08:25:58.000000000 +0200 +++ new/riff-3.3.4/testdata/git-diff-conflict-diff3.riff-output 2024-10-10 17:14:59.000000000 +0200 @@ -5,10 +5,10 @@ [36m@@@ -1,3 -1,3 +1,9 @@@[0m This is an example of git conflict markers. -[32m++<<<<<<< HEAD[0m -[32m +This line is [7mchanged[27m on the main branch.[0m -[32m++||||||| c26bbf8[0m -[32m++[31mThis line is [7mfrom the initial commit on the main [27mbranch.[0m -[32m++=======[0m -[32m+ This line is from the [7mbranch named "[27mbranch[7m"[27m.[0m -[32m++>>>>>>> branch[0m +[7m++<<<<<<< HEAD[0m +[7m +[27m[32mThis line is [7mchanged[27m on the main branch.[0m +[7m++||||||| c26bbf8[0m +[7m++[27m[31mThis line is [7mfrom the initial commit on the main [27mbranch.[0m +[7m++=======[0m +[7m+ [27m[32mThis line is from the [7mbranch named "[27mbranch[7m"[27m.[0m +[7m++>>>>>>> branch[0m diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/riff-3.3.3/testdata/git-diff-conflict.riff-output new/riff-3.3.4/testdata/git-diff-conflict.riff-output --- old/riff-3.3.3/testdata/git-diff-conflict.riff-output 2024-10-06 08:25:58.000000000 +0200 +++ new/riff-3.3.4/testdata/git-diff-conflict.riff-output 2024-10-10 17:14:59.000000000 +0200 @@ -5,8 +5,8 @@ [36m@@@ -1,3 -1,3 +1,7 @@@[0m This is an example of git conflict markers. -[32m++<<<<<<< HEAD[0m -[31m +This line is [7mchanged on[27m the [7mmain[27m branch.[0m -[32m++=======[0m -[32m+ This line is [7mfrom[27m the [7mbranch named "[27mbranch[7m"[27m.[0m -[32m++>>>>>>> branch[0m +[7m++<<<<<<< HEAD[0m +[7m +[27m[31mThis line is [7mchanged on[27m the [7mmain[27m branch.[0m +[7m++=======[0m +[7m+ [27m[32mThis line is [7mfrom[27m the [7mbranch named "[27mbranch[7m"[27m.[0m +[7m++>>>>>>> branch[0m diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/riff-3.3.3/testdata/git-rebase-unmerged.riff-output new/riff-3.3.4/testdata/git-rebase-unmerged.riff-output --- old/riff-3.3.3/testdata/git-rebase-unmerged.riff-output 2024-10-06 08:25:58.000000000 +0200 +++ new/riff-3.3.4/testdata/git-rebase-unmerged.riff-output 2024-10-10 17:14:59.000000000 +0200 @@ -6,60 +6,60 @@ - zfsbootmenu state: present -[32m++<<<<<<< HEAD[0m -[32m++=======[0m -[32m+ - name: Create ESP mdadm config[0m -[32m+ template:[0m -[32m+ src: mdadm.conf.j2[0m -[32m+ dest: /etc/mdadm.conf[0m -[32m+ owner: root[0m -[32m+ group: root[0m -[32m+ mode: 0644[0m -[32m+ when: esp_mdadm_array is defined[0m -[32m+ [0m -[32m+ - name: Install dropbear[0m -[32m+ xbps:[0m -[32m+ pkg:[0m -[32m+ - dropbear[0m -[32m+ - mkinitcpio-dropbear[0m -[32m+ state: present[0m -[32m+ [0m -[32m+ - name: Create dropbear directory[0m -[32m+ file:[0m -[32m+ path: /etc/dropbear[0m -[32m+ owner: root[0m -[32m+ group: root[0m -[32m+ mode: 0755[0m -[32m+ state: directory[0m -[32m+ [0m -[32m+ - name: Create dropbear keys[0m -[32m+ command:[0m -[32m+ cmd: /usr/bin/dropbearkey -t {{ item }} -f /etc/dropbear/dropbear_{{ item }}_host_key[0m -[32m+ creates: /etc/dropbear/dropbear_{{ item }}_host_key[0m -[32m+ loop:[0m -[32m+ - rsa[0m -[32m+ - ecdsa[0m -[32m+ - ed25519[0m -[32m+ [0m -[32m+ - name: Create dropbear authorised keys[0m -[32m+ template:[0m -[32m+ src: authorized_keys.j2[0m -[32m+ dest: /etc/dropbear/root_key[0m -[32m+ owner: root[0m -[32m+ group: root[0m -[32m+ mode: 0644[0m -[32m+ lstrip_blocks: true[0m -[32m+ [0m -[32m+ - name: Create dropbear config[0m -[32m+ template:[0m -[32m+ src: dropbear.conf.j2[0m -[32m+ dest: /etc/dropbear/dropbear.conf[0m -[32m+ owner: root[0m -[32m+ group: root[0m -[32m+ mode: 0644[0m -[32m+ lstrip_blocks: true[0m -[32m+ [0m -[32m++>>>>>>> 8eec118 (fixup! ansible/roles/zfsbootmenu: add role)[0m +[7m++<<<<<<< HEAD[0m +[7m++=======[0m +[7m+ [27m[32m- name: Create ESP mdadm config[0m +[7m+ [27m[32m template:[0m +[7m+ [27m[32m src: mdadm.conf.j2[0m +[7m+ [27m[32m dest: /etc/mdadm.conf[0m +[7m+ [27m[32m owner: root[0m +[7m+ [27m[32m group: root[0m +[7m+ [27m[32m mode: 0644[0m +[7m+ [27m[32m when: esp_mdadm_array is defined[0m +[7m+ [0m +[7m+ [27m[32m- name: Install dropbear[0m +[7m+ [27m[32m xbps:[0m +[7m+ [27m[32m pkg:[0m +[7m+ [27m[32m - dropbear[0m +[7m+ [27m[32m - mkinitcpio-dropbear[0m +[7m+ [27m[32m state: present[0m +[7m+ [0m +[7m+ [27m[32m- name: Create dropbear directory[0m +[7m+ [27m[32m file:[0m +[7m+ [27m[32m path: /etc/dropbear[0m +[7m+ [27m[32m owner: root[0m +[7m+ [27m[32m group: root[0m +[7m+ [27m[32m mode: 0755[0m +[7m+ [27m[32m state: directory[0m +[7m+ [0m +[7m+ [27m[32m- name: Create dropbear keys[0m +[7m+ [27m[32m command:[0m +[7m+ [27m[32m cmd: /usr/bin/dropbearkey -t {{ item }} -f /etc/dropbear/dropbear_{{ item }}_host_key[0m +[7m+ [27m[32m creates: /etc/dropbear/dropbear_{{ item }}_host_key[0m +[7m+ [27m[32m loop:[0m +[7m+ [27m[32m - rsa[0m +[7m+ [27m[32m - ecdsa[0m +[7m+ [27m[32m - ed25519[0m +[7m+ [0m +[7m+ [27m[32m- name: Create dropbear authorised keys[0m +[7m+ [27m[32m template:[0m +[7m+ [27m[32m src: authorized_keys.j2[0m +[7m+ [27m[32m dest: /etc/dropbear/root_key[0m +[7m+ [27m[32m owner: root[0m +[7m+ [27m[32m group: root[0m +[7m+ [27m[32m mode: 0644[0m +[7m+ [27m[32m lstrip_blocks: true[0m +[7m+ [0m +[7m+ [27m[32m- name: Create dropbear config[0m +[7m+ [27m[32m template:[0m +[7m+ [27m[32m src: dropbear.conf.j2[0m +[7m+ [27m[32m dest: /etc/dropbear/dropbear.conf[0m +[7m+ [27m[32m owner: root[0m +[7m+ [27m[32m group: root[0m +[7m+ [27m[32m mode: 0644[0m +[7m+ [27m[32m lstrip_blocks: true[0m +[7m+ [0m +[7m++>>>>>>> 8eec118 (fixup! ansible/roles/zfsbootmenu: add role)[0m - name: Create zfsbootmenu config template: src: config.yaml.j2 ++++++ vendor.tar.zst ++++++ /work/SRC/openSUSE:Factory/riff/vendor.tar.zst /work/SRC/openSUSE:Factory/.riff.new.19354/vendor.tar.zst differ: char 329937, line 1331