<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Thanks.<div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 22 Feb 2022, at 17:14, Justin <<a href="mailto:justinvallon@gmail.com" class="">justinvallon@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class="">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" class="">
<div class="">
<div class="moz-cite-prefix">Personally, I try to make sure that
regular-merges are the norm, and rebase/reset is the exceptional
case. Once you use rebase, you typically need to use force-push,
and once you start using force-push regularly, it is easy to lose
commits because you force push and actually lose something on the
remote that you didn't incorporate into the local push-source.<br class="">
<br class="">
If you never commit to your local master (or origin/master), it
will never diverge from upstream/master, and the reset/push
--force will not be necessary.</div>
<div class="moz-cite-prefix"><br class="">
</div>
<div class="moz-cite-prefix">I don't think you comments match what
is being done:<br class="">
<br class="">
git checkout master # switch to local branch master</div>
<div class="moz-cite-prefix">git pull upstream master # fetch
upstream master and merge upstream/master into current branch</div>
<div class="moz-cite-prefix"># does not: overwrite my local master
with remote upstream/master<br class=""></div></div></div></blockquote><div><br class=""></div><div>Yes, the comment is wrong. After all I had just checked out master. But I have been advised a pull is not enough, I should first do a fetch.</div><br class=""><blockquote type="cite" class=""><div class=""><div class=""><div class="moz-cite-prefix">
</div>
<div class="moz-cite-prefix">git reset --hard upstream/master # move
local branch to point to upstream/master</div>
<div class="moz-cite-prefix">git push origin master --force # push
master branch back to fork's master</div>
<div class="moz-cite-prefix">portindex</div>
<div class="moz-cite-prefix"><br class="">
These instructions would be (kind of) correct if you think the
origin/master branch or local master branch might diverge from
upstream/master. </div></div></div></blockquote><div><br class=""></div><div>Yes. Before I update my master with the upstream, I need to work with it as is. Or I need to update any branch I work on from the upstream master. In both cases I have too many things that change concurrently and things that go wrong are then impossible to catch.</div><br class=""><blockquote type="cite" class=""><div class=""><div class=""><div class="moz-cite-prefix">However, even then, you have a pull (which
merges), then a reset (which discards). That is, either:</div>
<div class="moz-cite-prefix"><br class="">
</div>
<div class="moz-cite-prefix">git checkout master ; git pull upstream
master ; git push</div>
<div class="moz-cite-prefix"><br class="">
</div>
<div class="moz-cite-prefix">or:</div>
<div class="moz-cite-prefix"><br class="">
</div>
<div class="moz-cite-prefix">git checkout master ; git fetch
upstream ; git reset --hard upstream/master ; git push --force
origin master</div>
<div class="moz-cite-prefix"><br class="">
</div>
<div class="moz-cite-prefix">The reset/force-push is a bit
contradictory: the instructions indicate that something might have
been added to the master branch, but it is being discarded. Why
would something be added to the master branch if it should not be
retained. </div></div></div></blockquote><div><br class=""></div><div>It is just to be 100% certain that my master reflects upstream master</div><br class=""><blockquote type="cite" class=""><div class=""><div class=""><div class="moz-cite-prefix">Also, why pull (merge) if the next step is going to
reset --hard. If the branches have diverged, you might have a
merge conflict.<br class="">
</div>
<div class="moz-cite-prefix"><br class="">
</div>
<div class="moz-cite-prefix">The "git push --force" would close an
open PR if the PR's branch was your master branch (since
origin/master and upstream/master are the same, the PR would be
closed). Otherwise, I don't see how pushing to master would
affect PRs on non-master branches.</div>
<div class="moz-cite-prefix"><br class="">
My approach:<br class="">
<br class="">
a) Never commit to your fork's master (besides pull from upstream)<br class="">
</div>
<div class="moz-cite-prefix">b) Always push your changes to fork's
branch(es)<br class="">
c) PRs from fork branch</div></div></div></blockquote><div><br class=""></div><div>That is what I do. But I cannot always have my own master be exactly like the upstream because of the ’too many changes and I’ll never find what causes it'</div><br class=""><blockquote type="cite" class=""><div class=""><div class="">
<div class="moz-cite-prefix"><br class="">
A periodic "git checkout master && git pull upstream
master && git push" should keep fork's master branch
up-to-date.<br class=""></div></div></div></blockquote><div><br class=""></div><div>Should there not be a fetch somewhere?</div><br class=""><blockquote type="cite" class=""><div class=""><div class=""><div class="moz-cite-prefix">
<br class="">
As to whether you local git repo is ok:<br class="">
<br class="">
- Check "git status" does not show anything modified (or not
checked in)<br class="">
- Once you see everything is checked in, "git diff
upstream/master" will show diffs between local commit</div>
<div class="moz-cite-prefix">- "git rev-parse HEAD upstream/master"
will show the SHAs of you local branch and upstream/master. It
seems like you want them to be the same.<br class="">
</div>
<div class="moz-cite-prefix"><br class="">
-Justin<br class="">
</div>
<br class="">
<div class="moz-cite-prefix">On 2/19/22 07:59, Gerben Wierda via
macports-users wrote:<br class="">
</div>
<blockquote type="cite" cite="mid:F95DC47A-AA2E-4FE3-9B49-329A6E5CAE8D@rna.nl" class="">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" class="">
I have my own fork&clone of macports-ports in case I want to
do maintenance. Getting a clean local clone for me means:
<div class=""><br class="">
</div>
<div class="">
<div class=""><span style="font-style: normal; font-size: 11px;" class=""><font class="" face="Menlo"># First, do an update
of macports base only (does not update the ports tree):</font></span></div>
<div class=""><span style="font-style: normal; font-size: 11px;" class=""><font class="" face="Menlo"><br class="">
</font></span></div>
<div class=""><span style="font-style: normal; font-size: 11px;" class=""><font class="" face="Menlo">sudo port selfupdate
--no-sync</font></span></div>
<div class=""><span style="font-style: normal; font-size: 11px;" class=""><font class="" face="Menlo"><br class="">
</font></span></div>
<div class=""><span style="font-style: normal; font-size: 11px;" class=""><font class="" face="Menlo"># Updating the master
of my fork&clone from the master of the original:</font></span></div>
<div class=""><span style="font-style: normal; font-size: 11px;" class=""><font class="" face="Menlo"><br class="">
</font></span></div>
<div class=""><span style="font-style: normal; font-size: 11px;" class=""><font class="" face="Menlo">git checkout master<span class="Apple-tab-span" style="white-space:pre"> </span>#
Go to branch master in my local clone</font></span></div>
<div class=""><span style="font-style: normal; font-size: 11px;" class=""><font class="" face="Menlo">git pull upstream
master<span class="Apple-tab-span" style="white-space:pre"> </span>#
Update my local clone master from the master of the remote
upstream</font></span></div>
<div class=""><span style="font-style: normal; font-size: 11px;" class=""><font class="" face="Menlo"><span class="Apple-tab-span" style="white-space:pre"> </span>#
(overwrites my local master with remote
github/macports/master)</font></span></div>
<div class=""><span style="font-style: normal; font-size: 11px;" class=""><font class="" face="Menlo">git reset --hard
upstream/master<span class="Apple-tab-span" style="white-space:pre"> </span>#
Resets index and working tree of local clone/master from
remote upstream</font></span></div>
<div class=""><span style="font-style: normal; font-size: 11px;" class=""><font class="" face="Menlo">git push origin master
--force <span class="Apple-tab-span" style="white-space:pre"> </span>#
Push local clone (~/MacPortsDev/macports-ports) master
back</font></span></div>
<div class=""><span style="font-style: normal; font-size: 11px;" class=""><font class="" face="Menlo"><span class="Apple-tab-span" style="white-space:pre"> </span>#
to my own remote fork (github/gctwnl/macports-ports)</font></span></div>
<div class=""><span style="font-style: normal; font-size: 11px;" class=""><font class="" face="Menlo"><span class="Apple-tab-span" style="white-space:pre"> </span>#
NOTE: this closes all open pull-requests!</font></span></div>
<div class=""><span style="font-family: Menlo; font-size: 11px;" class="">portindex</span><span class="Apple-tab-span" style="font-family: Menlo; font-size: 11px; white-space: pre;"> </span><span style="font-family: Menlo; font-size: 11px;" class=""># Tell
macports to use this tree and update the macports index</span></div>
</div>
<div class=""><br class="">
</div>
<div class="">Apparently, in the past UI have accidentally done
some of this as root, so this failed because parts of the
macports-ports clone were owned by root.</div>
<div class=""><br class="">
</div>
<div class="">So, I did a chown -R on that tree and tried again,
but now I get</div>
<div class=""><br class="">
</div>
<div class="">
<div style="margin: 0px; font-stretch: normal; font-size: 11px;
line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">albus:macports-ports
sysbh$ git pull upstream master</span></div>
<div style="margin: 0px; font-stretch: normal; font-size: 11px;
line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">From
<a href="https://github.com/macports/macports-ports" class="moz-txt-link-freetext" moz-do-not-send="true">https://github.com/macports/macports-ports</a></span></div>
<div style="margin: 0px; font-stretch: normal; font-size: 11px;
line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class=""> *
branch master -> FETCH_HEAD</span></div>
<div style="margin: 0px; font-stretch: normal; font-size: 11px;
line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">Updating
e0a3df02c73..eca5c1226ee</span></div>
<div style="margin: 0px; font-stretch: normal; font-size: 11px;
line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">error:
Your local changes to the following files would be
overwritten by merge:</span></div>
<div style="margin: 0px; font-stretch: normal; font-size: 11px;
line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class=""><span class="Apple-tab-span" style="white-space:pre"> </span>_resources/port1.0/checks/implicit_function_declaration/macosx10.10.sdk.list</span></div>
<div style="margin: 0px; font-stretch: normal; font-size: 11px;
line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class=""><span class="Apple-tab-span" style="white-space:pre"> </span>_resources/port1.0/checks/implicit_function_declaration/macosx10.11.sdk.list</span></div>
</div>
<div class=""><span style="font-variant-ligatures:
no-common-ligatures" class="">…</span></div>
<div class=""><span style="font-variant-ligatures:
no-common-ligatures" class="">
<div style="margin: 0px; font-stretch: normal; font-size:
11px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">error: The following untracked working tree files
would be overwritten by merge:</span></div>
<div style="margin: 0px; font-stretch: normal; font-size:
11px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class=""><span class="Apple-tab-span" style="white-space:pre"> </span>aqua/qt5/files/patch-qtwebengine_gn_binary_path.diff</span></div>
<div style="margin: 0px; font-stretch: normal; font-size:
11px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class=""><span class="Apple-tab-span" style="white-space:pre"> </span>comms/s710/files/dynamic_lookup-11.patch</span></div>
<div class=""><span style="font-variant-ligatures:
no-common-ligatures" class=""><br class="">
</span></div>
</span></div>
<div class="">So I tried to do </div>
<div class=""><br class="">
</div>
<div class=""><span style="font-family: Menlo; font-size: 11px;" class="">git reset --hard upstream/master</span></div>
<div class=""><br class="">
</div>
<div class="">and apparently this did work as another pull did
nothing. But before I push that back to my own clone: have I
done anything wrong? Is my local tree in order now?</div>
<div class=""><br class="">
</div>
<div class="">
<div class="">
<div dir="auto" style="caret-color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">
<div dir="auto" style="caret-color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">
<div dir="auto" style="caret-color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">
<div dir="auto" style="caret-color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">
<div dir="auto" style="caret-color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">
<div dir="auto" style="caret-color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">
<div dir="auto" style="caret-color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">
<div class="">
<div class="">Gerben Wierda (<a href="https://www.linkedin.com/in/gerbenwierda" class="" moz-do-not-send="true">LinkedIn</a>)</div>
<div class=""><a href="https://ea.rna.nl/" class="" moz-do-not-send="true">R&A IT
Strategy</a> (main site)<br class="">
Book: <a href="https://ea.rna.nl/the-book/" class="" moz-do-not-send="true">Chess and
the Art of Enterprise Architecture</a><br class="">
Book: <a href="https://ea.rna.nl/the-book-edition-iii/" class="" moz-do-not-send="true">Mastering
ArchiMate</a><br class="">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<br class="">
</div>
</blockquote><p class=""><br class="">
</p>
</div>
</div></blockquote></div><br class=""></div></body></html>