Ignore fixup or squash commits in fixup_candidates_lines - #65

Open
guludo wants to merge 1 commit into
keis:masterfrom
guludo:ignore-fixup-squash-fixup_candidates_lines
Open

Ignore fixup or squash commits in fixup_candidates_lines#65
guludo wants to merge 1 commit into
keis:masterfrom
guludo:ignore-fixup-squash-fixup_candidates_lines

Conversation

@guludo

Copy link
Copy Markdown
Contributor

Fixup or squash commits are already ignored in fixup_candidates_files, do that in fixup_candidates_lines as well.

Fixup or squash commits are already ignored in fixup_candidates_files,
do that in fixup_candidates_lines as well.
@keis

keis commented Sep 27, 2022

Copy link
Copy Markdown
Owner

Hey, thanks for the pull request!

I need to think about this one a bit and haven't really had the time but I'll try to write down my thoughts.

First, this doesn't have a comparable effect to what is done in fixup_candidates_file. That function is pretty simple and takes the git log excluding fixups and provides the first result, and crucially still outputs a candidate even if the first commit is a filtered. This in contrast gets the candidates and the filters after.

It's possible the commit range passed to blame could be tweaked to get a "non-fixup" suggestion but that's probably pretty complex. For one it would have to consider changes to line numbers in those fixup commits that are skipped.

As the effect of the filter is pretty much equivalent to git-fixup | grep -v fixup the code could be simplified and avoid that extra rev-list

If you're changing the same line again as a previous fixup in a way it kinda makes sense to think of as a fixup to a fixup, but I guess git rebase doesn't handle that situation. And is filtering the candidate really helping? I imagine in that situation you would get nothing instead.

and a final btw after 5 years maybe it's now time to use --invert-grep #34

Sorry for the big train of thought dump, let me know what you think. If you have any examples of scenarios where you would want this is also good.

@guludo

Copy link
Copy Markdown
ContributorAuthor

Hi, @keis. Thank you for your comments.

In my use case, I had multiple fixes for a single commit (and possibly others for other commits as well). I wanted to do them incrementally, so I could review them before performing the rebase of my feature branch. As such, showing fixup commits as candidates did not have any use for me. While piping the output to a grep commit would be reasonable, for me it wouldn't be so convenient as I am using the menu feature.

@guludo

Copy link
Copy Markdown
ContributorAuthor

I took a second look at the code and, indeed, filtering after is somewhat awkward. Although it might work in some cases, it might not produce the desired effect in other cases.

Maybe a better fix here would be to lookup the original commit for each fixup commit found? That could be done by finding the first commit in the revision range that matches the title without the fixup! or squash! prefix.

@keis

keis commented Dec 7, 2022

Copy link
Copy Markdown
Owner

Hey, sorry for the long delay, responding to this got lost in my TODO list somewhere.

I like the idea of looking up the original commit for fixup commits that would be suggested

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@guludo@keis
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Ignore fixup or squash commits in fixup_candidates_lines - #65

Open
guludo wants to merge 1 commit into
keis:masterfrom
guludo:ignore-fixup-squash-fixup_candidates_lines
Open

Ignore fixup or squash commits in fixup_candidates_lines#65
guludo wants to merge 1 commit into
keis:masterfrom
guludo:ignore-fixup-squash-fixup_candidates_lines

Conversation

@guludo

Copy link
Copy Markdown
Contributor

Fixup or squash commits are already ignored in fixup_candidates_files, do that in fixup_candidates_lines as well.

Fixup or squash commits are already ignored in fixup_candidates_files,
do that in fixup_candidates_lines as well.
@keis

keis commented Sep 27, 2022

Copy link
Copy Markdown
Owner

Hey, thanks for the pull request!

I need to think about this one a bit and haven't really had the time but I'll try to write down my thoughts.

First, this doesn't have a comparable effect to what is done in fixup_candidates_file. That function is pretty simple and takes the git log excluding fixups and provides the first result, and crucially still outputs a candidate even if the first commit is a filtered. This in contrast gets the candidates and the filters after.

It's possible the commit range passed to blame could be tweaked to get a "non-fixup" suggestion but that's probably pretty complex. For one it would have to consider changes to line numbers in those fixup commits that are skipped.

As the effect of the filter is pretty much equivalent to git-fixup | grep -v fixup the code could be simplified and avoid that extra rev-list

If you're changing the same line again as a previous fixup in a way it kinda makes sense to think of as a fixup to a fixup, but I guess git rebase doesn't handle that situation. And is filtering the candidate really helping? I imagine in that situation you would get nothing instead.

and a final btw after 5 years maybe it's now time to use --invert-grep #34

Sorry for the big train of thought dump, let me know what you think. If you have any examples of scenarios where you would want this is also good.

@guludo

Copy link
Copy Markdown
ContributorAuthor

Hi, @keis. Thank you for your comments.

In my use case, I had multiple fixes for a single commit (and possibly others for other commits as well). I wanted to do them incrementally, so I could review them before performing the rebase of my feature branch. As such, showing fixup commits as candidates did not have any use for me. While piping the output to a grep commit would be reasonable, for me it wouldn't be so convenient as I am using the menu feature.

@guludo

Copy link
Copy Markdown
ContributorAuthor

I took a second look at the code and, indeed, filtering after is somewhat awkward. Although it might work in some cases, it might not produce the desired effect in other cases.

Maybe a better fix here would be to lookup the original commit for each fixup commit found? That could be done by finding the first commit in the revision range that matches the title without the fixup! or squash! prefix.

@keis

keis commented Dec 7, 2022

Copy link
Copy Markdown
Owner

Hey, sorry for the long delay, responding to this got lost in my TODO list somewhere.

I like the idea of looking up the original commit for fixup commits that would be suggested

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@guludo@keis
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Ignore fixup or squash commits in fixup_candidates_lines - #65

Open
guludo wants to merge 1 commit into
keis:masterfrom
guludo:ignore-fixup-squash-fixup_candidates_lines
Open

Ignore fixup or squash commits in fixup_candidates_lines#65
guludo wants to merge 1 commit into
keis:masterfrom
guludo:ignore-fixup-squash-fixup_candidates_lines

Conversation

@guludo

Copy link
Copy Markdown
Contributor

Fixup or squash commits are already ignored in fixup_candidates_files, do that in fixup_candidates_lines as well.

Fixup or squash commits are already ignored in fixup_candidates_files,
do that in fixup_candidates_lines as well.
@keis

keis commented Sep 27, 2022

Copy link
Copy Markdown
Owner

Hey, thanks for the pull request!

I need to think about this one a bit and haven't really had the time but I'll try to write down my thoughts.

First, this doesn't have a comparable effect to what is done in fixup_candidates_file. That function is pretty simple and takes the git log excluding fixups and provides the first result, and crucially still outputs a candidate even if the first commit is a filtered. This in contrast gets the candidates and the filters after.

It's possible the commit range passed to blame could be tweaked to get a "non-fixup" suggestion but that's probably pretty complex. For one it would have to consider changes to line numbers in those fixup commits that are skipped.

As the effect of the filter is pretty much equivalent to git-fixup | grep -v fixup the code could be simplified and avoid that extra rev-list

If you're changing the same line again as a previous fixup in a way it kinda makes sense to think of as a fixup to a fixup, but I guess git rebase doesn't handle that situation. And is filtering the candidate really helping? I imagine in that situation you would get nothing instead.

and a final btw after 5 years maybe it's now time to use --invert-grep #34

Sorry for the big train of thought dump, let me know what you think. If you have any examples of scenarios where you would want this is also good.

@guludo

Copy link
Copy Markdown
ContributorAuthor

Hi, @keis. Thank you for your comments.

In my use case, I had multiple fixes for a single commit (and possibly others for other commits as well). I wanted to do them incrementally, so I could review them before performing the rebase of my feature branch. As such, showing fixup commits as candidates did not have any use for me. While piping the output to a grep commit would be reasonable, for me it wouldn't be so convenient as I am using the menu feature.

@guludo

Copy link
Copy Markdown
ContributorAuthor

I took a second look at the code and, indeed, filtering after is somewhat awkward. Although it might work in some cases, it might not produce the desired effect in other cases.

Maybe a better fix here would be to lookup the original commit for each fixup commit found? That could be done by finding the first commit in the revision range that matches the title without the fixup! or squash! prefix.

@keis

keis commented Dec 7, 2022

Copy link
Copy Markdown
Owner

Hey, sorry for the long delay, responding to this got lost in my TODO list somewhere.

I like the idea of looking up the original commit for fixup commits that would be suggested

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@guludo@keis
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Ignore fixup or squash commits in fixup_candidates_lines - #65

Open
guludo wants to merge 1 commit into
keis:masterfrom
guludo:ignore-fixup-squash-fixup_candidates_lines
Open

Ignore fixup or squash commits in fixup_candidates_lines#65
guludo wants to merge 1 commit into
keis:masterfrom
guludo:ignore-fixup-squash-fixup_candidates_lines

Conversation

@guludo

Copy link
Copy Markdown
Contributor

Fixup or squash commits are already ignored in fixup_candidates_files, do that in fixup_candidates_lines as well.

Fixup or squash commits are already ignored in fixup_candidates_files,
do that in fixup_candidates_lines as well.
@keis

keis commented Sep 27, 2022

Copy link
Copy Markdown
Owner

Hey, thanks for the pull request!

I need to think about this one a bit and haven't really had the time but I'll try to write down my thoughts.

First, this doesn't have a comparable effect to what is done in fixup_candidates_file. That function is pretty simple and takes the git log excluding fixups and provides the first result, and crucially still outputs a candidate even if the first commit is a filtered. This in contrast gets the candidates and the filters after.

It's possible the commit range passed to blame could be tweaked to get a "non-fixup" suggestion but that's probably pretty complex. For one it would have to consider changes to line numbers in those fixup commits that are skipped.

As the effect of the filter is pretty much equivalent to git-fixup | grep -v fixup the code could be simplified and avoid that extra rev-list

If you're changing the same line again as a previous fixup in a way it kinda makes sense to think of as a fixup to a fixup, but I guess git rebase doesn't handle that situation. And is filtering the candidate really helping? I imagine in that situation you would get nothing instead.

and a final btw after 5 years maybe it's now time to use --invert-grep #34

Sorry for the big train of thought dump, let me know what you think. If you have any examples of scenarios where you would want this is also good.

@guludo

Copy link
Copy Markdown
ContributorAuthor

Hi, @keis. Thank you for your comments.

In my use case, I had multiple fixes for a single commit (and possibly others for other commits as well). I wanted to do them incrementally, so I could review them before performing the rebase of my feature branch. As such, showing fixup commits as candidates did not have any use for me. While piping the output to a grep commit would be reasonable, for me it wouldn't be so convenient as I am using the menu feature.

@guludo

Copy link
Copy Markdown
ContributorAuthor

I took a second look at the code and, indeed, filtering after is somewhat awkward. Although it might work in some cases, it might not produce the desired effect in other cases.

Maybe a better fix here would be to lookup the original commit for each fixup commit found? That could be done by finding the first commit in the revision range that matches the title without the fixup! or squash! prefix.

@keis

keis commented Dec 7, 2022

Copy link
Copy Markdown
Owner

Hey, sorry for the long delay, responding to this got lost in my TODO list somewhere.

I like the idea of looking up the original commit for fixup commits that would be suggested

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@guludo@keis
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Ignore fixup or squash commits in fixup_candidates_lines - #65

Open
guludo wants to merge 1 commit into
keis:masterfrom
guludo:ignore-fixup-squash-fixup_candidates_lines
Open

Ignore fixup or squash commits in fixup_candidates_lines#65
guludo wants to merge 1 commit into
keis:masterfrom
guludo:ignore-fixup-squash-fixup_candidates_lines

Conversation

@guludo

Copy link
Copy Markdown
Contributor

Fixup or squash commits are already ignored in fixup_candidates_files, do that in fixup_candidates_lines as well.

Fixup or squash commits are already ignored in fixup_candidates_files,
do that in fixup_candidates_lines as well.
@keis

keis commented Sep 27, 2022

Copy link
Copy Markdown
Owner

Hey, thanks for the pull request!

I need to think about this one a bit and haven't really had the time but I'll try to write down my thoughts.

First, this doesn't have a comparable effect to what is done in fixup_candidates_file. That function is pretty simple and takes the git log excluding fixups and provides the first result, and crucially still outputs a candidate even if the first commit is a filtered. This in contrast gets the candidates and the filters after.

It's possible the commit range passed to blame could be tweaked to get a "non-fixup" suggestion but that's probably pretty complex. For one it would have to consider changes to line numbers in those fixup commits that are skipped.

As the effect of the filter is pretty much equivalent to git-fixup | grep -v fixup the code could be simplified and avoid that extra rev-list

If you're changing the same line again as a previous fixup in a way it kinda makes sense to think of as a fixup to a fixup, but I guess git rebase doesn't handle that situation. And is filtering the candidate really helping? I imagine in that situation you would get nothing instead.

and a final btw after 5 years maybe it's now time to use --invert-grep #34

Sorry for the big train of thought dump, let me know what you think. If you have any examples of scenarios where you would want this is also good.

@guludo

Copy link
Copy Markdown
ContributorAuthor

Hi, @keis. Thank you for your comments.

In my use case, I had multiple fixes for a single commit (and possibly others for other commits as well). I wanted to do them incrementally, so I could review them before performing the rebase of my feature branch. As such, showing fixup commits as candidates did not have any use for me. While piping the output to a grep commit would be reasonable, for me it wouldn't be so convenient as I am using the menu feature.

@guludo

Copy link
Copy Markdown
ContributorAuthor

I took a second look at the code and, indeed, filtering after is somewhat awkward. Although it might work in some cases, it might not produce the desired effect in other cases.

Maybe a better fix here would be to lookup the original commit for each fixup commit found? That could be done by finding the first commit in the revision range that matches the title without the fixup! or squash! prefix.

@keis

keis commented Dec 7, 2022

Copy link
Copy Markdown
Owner

Hey, sorry for the long delay, responding to this got lost in my TODO list somewhere.

I like the idea of looking up the original commit for fixup commits that would be suggested

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@guludo@keis
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Ignore fixup or squash commits in fixup_candidates_lines - #65

Open
guludo wants to merge 1 commit into
keis:masterfrom
guludo:ignore-fixup-squash-fixup_candidates_lines
Open

Ignore fixup or squash commits in fixup_candidates_lines#65
guludo wants to merge 1 commit into
keis:masterfrom
guludo:ignore-fixup-squash-fixup_candidates_lines

Conversation

@guludo

Copy link
Copy Markdown
Contributor

Fixup or squash commits are already ignored in fixup_candidates_files, do that in fixup_candidates_lines as well.

Fixup or squash commits are already ignored in fixup_candidates_files,
do that in fixup_candidates_lines as well.
@keis

keis commented Sep 27, 2022

Copy link
Copy Markdown
Owner

Hey, thanks for the pull request!

I need to think about this one a bit and haven't really had the time but I'll try to write down my thoughts.

First, this doesn't have a comparable effect to what is done in fixup_candidates_file. That function is pretty simple and takes the git log excluding fixups and provides the first result, and crucially still outputs a candidate even if the first commit is a filtered. This in contrast gets the candidates and the filters after.

It's possible the commit range passed to blame could be tweaked to get a "non-fixup" suggestion but that's probably pretty complex. For one it would have to consider changes to line numbers in those fixup commits that are skipped.

As the effect of the filter is pretty much equivalent to git-fixup | grep -v fixup the code could be simplified and avoid that extra rev-list

If you're changing the same line again as a previous fixup in a way it kinda makes sense to think of as a fixup to a fixup, but I guess git rebase doesn't handle that situation. And is filtering the candidate really helping? I imagine in that situation you would get nothing instead.

and a final btw after 5 years maybe it's now time to use --invert-grep #34

Sorry for the big train of thought dump, let me know what you think. If you have any examples of scenarios where you would want this is also good.

@guludo

Copy link
Copy Markdown
ContributorAuthor

Hi, @keis. Thank you for your comments.

In my use case, I had multiple fixes for a single commit (and possibly others for other commits as well). I wanted to do them incrementally, so I could review them before performing the rebase of my feature branch. As such, showing fixup commits as candidates did not have any use for me. While piping the output to a grep commit would be reasonable, for me it wouldn't be so convenient as I am using the menu feature.

@guludo

Copy link
Copy Markdown
ContributorAuthor

I took a second look at the code and, indeed, filtering after is somewhat awkward. Although it might work in some cases, it might not produce the desired effect in other cases.

Maybe a better fix here would be to lookup the original commit for each fixup commit found? That could be done by finding the first commit in the revision range that matches the title without the fixup! or squash! prefix.

@keis

keis commented Dec 7, 2022

Copy link
Copy Markdown
Owner

Hey, sorry for the long delay, responding to this got lost in my TODO list somewhere.

I like the idea of looking up the original commit for fixup commits that would be suggested

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@guludo@keis
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Ignore fixup or squash commits in fixup_candidates_lines - #65

Open
guludo wants to merge 1 commit into
keis:masterfrom
guludo:ignore-fixup-squash-fixup_candidates_lines
Open

Ignore fixup or squash commits in fixup_candidates_lines#65
guludo wants to merge 1 commit into
keis:masterfrom
guludo:ignore-fixup-squash-fixup_candidates_lines

Conversation

@guludo

Copy link
Copy Markdown
Contributor

Fixup or squash commits are already ignored in fixup_candidates_files, do that in fixup_candidates_lines as well.

Fixup or squash commits are already ignored in fixup_candidates_files,
do that in fixup_candidates_lines as well.
@keis

keis commented Sep 27, 2022

Copy link
Copy Markdown
Owner

Hey, thanks for the pull request!

I need to think about this one a bit and haven't really had the time but I'll try to write down my thoughts.

First, this doesn't have a comparable effect to what is done in fixup_candidates_file. That function is pretty simple and takes the git log excluding fixups and provides the first result, and crucially still outputs a candidate even if the first commit is a filtered. This in contrast gets the candidates and the filters after.

It's possible the commit range passed to blame could be tweaked to get a "non-fixup" suggestion but that's probably pretty complex. For one it would have to consider changes to line numbers in those fixup commits that are skipped.

As the effect of the filter is pretty much equivalent to git-fixup | grep -v fixup the code could be simplified and avoid that extra rev-list

If you're changing the same line again as a previous fixup in a way it kinda makes sense to think of as a fixup to a fixup, but I guess git rebase doesn't handle that situation. And is filtering the candidate really helping? I imagine in that situation you would get nothing instead.

and a final btw after 5 years maybe it's now time to use --invert-grep #34

Sorry for the big train of thought dump, let me know what you think. If you have any examples of scenarios where you would want this is also good.

@guludo

Copy link
Copy Markdown
ContributorAuthor

Hi, @keis. Thank you for your comments.

In my use case, I had multiple fixes for a single commit (and possibly others for other commits as well). I wanted to do them incrementally, so I could review them before performing the rebase of my feature branch. As such, showing fixup commits as candidates did not have any use for me. While piping the output to a grep commit would be reasonable, for me it wouldn't be so convenient as I am using the menu feature.

@guludo

Copy link
Copy Markdown
ContributorAuthor

I took a second look at the code and, indeed, filtering after is somewhat awkward. Although it might work in some cases, it might not produce the desired effect in other cases.

Maybe a better fix here would be to lookup the original commit for each fixup commit found? That could be done by finding the first commit in the revision range that matches the title without the fixup! or squash! prefix.

@keis

keis commented Dec 7, 2022

Copy link
Copy Markdown
Owner

Hey, sorry for the long delay, responding to this got lost in my TODO list somewhere.

I like the idea of looking up the original commit for fixup commits that would be suggested

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@guludo@keis
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Ignore fixup or squash commits in fixup_candidates_lines - #65

Open
guludo wants to merge 1 commit into
keis:masterfrom
guludo:ignore-fixup-squash-fixup_candidates_lines
Open

Ignore fixup or squash commits in fixup_candidates_lines#65
guludo wants to merge 1 commit into
keis:masterfrom
guludo:ignore-fixup-squash-fixup_candidates_lines

Conversation

@guludo

Copy link
Copy Markdown
Contributor

Fixup or squash commits are already ignored in fixup_candidates_files, do that in fixup_candidates_lines as well.

Fixup or squash commits are already ignored in fixup_candidates_files,
do that in fixup_candidates_lines as well.
@keis

keis commented Sep 27, 2022

Copy link
Copy Markdown
Owner

Hey, thanks for the pull request!

I need to think about this one a bit and haven't really had the time but I'll try to write down my thoughts.

First, this doesn't have a comparable effect to what is done in fixup_candidates_file. That function is pretty simple and takes the git log excluding fixups and provides the first result, and crucially still outputs a candidate even if the first commit is a filtered. This in contrast gets the candidates and the filters after.

It's possible the commit range passed to blame could be tweaked to get a "non-fixup" suggestion but that's probably pretty complex. For one it would have to consider changes to line numbers in those fixup commits that are skipped.

As the effect of the filter is pretty much equivalent to git-fixup | grep -v fixup the code could be simplified and avoid that extra rev-list

If you're changing the same line again as a previous fixup in a way it kinda makes sense to think of as a fixup to a fixup, but I guess git rebase doesn't handle that situation. And is filtering the candidate really helping? I imagine in that situation you would get nothing instead.

and a final btw after 5 years maybe it's now time to use --invert-grep #34

Sorry for the big train of thought dump, let me know what you think. If you have any examples of scenarios where you would want this is also good.

@guludo

Copy link
Copy Markdown
ContributorAuthor

Hi, @keis. Thank you for your comments.

In my use case, I had multiple fixes for a single commit (and possibly others for other commits as well). I wanted to do them incrementally, so I could review them before performing the rebase of my feature branch. As such, showing fixup commits as candidates did not have any use for me. While piping the output to a grep commit would be reasonable, for me it wouldn't be so convenient as I am using the menu feature.

@guludo

Copy link
Copy Markdown
ContributorAuthor

I took a second look at the code and, indeed, filtering after is somewhat awkward. Although it might work in some cases, it might not produce the desired effect in other cases.

Maybe a better fix here would be to lookup the original commit for each fixup commit found? That could be done by finding the first commit in the revision range that matches the title without the fixup! or squash! prefix.

@keis

keis commented Dec 7, 2022

Copy link
Copy Markdown
Owner

Hey, sorry for the long delay, responding to this got lost in my TODO list somewhere.

I like the idea of looking up the original commit for fixup commits that would be suggested

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@guludo@keis