Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gh repo sync should be able to sync a local branch with an upstream remote #8229

Merged
merged 4 commits into from
Nov 20, 2023

Conversation

benebsiny
Copy link
Contributor

@benebsiny benebsiny commented Oct 21, 2023

Fixes #8100

Suppose there are 3 remotes

$ git remote -v
origin     git@github.com:me/project.git (fetch)
origin     git@github.com:me/project.git (push)
upstream   git@github.com:owner/project.git (fetch)
upstream   git@github.com:owner/project.git (push)
stranger   git@github.com:strangers/strangers.git (fetch)
stranger   git@github.com:strangers/strangers.git (push)

The orgin is upstream's fork, and local repo is cloned from origin. Besides, the stranger has nothing to do with the origin, upstream, and local ones.

If you are trying gh repo sync --source owner/project, the program will enter sync.go#236 block. Next, check if this remote has the same ancestor as local repo, and this is done by func HasCommonAncestor (sync.go#237), which runs git merge-base branch_name FETCH_HEAD (Git Doc). Since the local repo is a fork of upstream, func HasCommonAncestor should return true. Then the program continues.

If you are trying gh repo sync --source strangers/strangers, func HasCommonAncestor should return false. Therefore, an error message is shown: can't sync because master is not tracking strangers/strangers


Assume that the upstream is removed by git remote remove upstream, then run gh repo sync --source owner/project, an error message is shown: can't sync because master is not tracking owner/project.
So, should this PR also handle (try to sync) the remotes which are not listed in git remote? Or just show the aforementioned error message?

If there's something unclarity, please let me know, thank you!

@benebsiny benebsiny requested a review from a team as a code owner October 21, 2023 17:21
@benebsiny benebsiny requested review from samcoe and removed request for a team October 21, 2023 17:21
@cliAutomation cliAutomation added the external pull request originating outside of the CLI core team label Oct 21, 2023
@cliAutomation cliAutomation added this to Needs review 🤔 in The GitHub CLI Oct 21, 2023
@samcoe samcoe self-assigned this Nov 8, 2023
@samcoe
Copy link
Contributor

samcoe commented Nov 8, 2023

@benebsiny Appreciate you getting started on this work and apologies for the delayed review. I think this implementation is a bit more complicated than it needs to be unless I have missed something. Perhaps you can explain why git.HasCommonAncestorAncestor is necessary?

My thoughts are that we can simply remove the mismatch remotes check to resolve #8100. The git.IsAncestor check should continue to work properly and make sure the user only gets a fast forward merge when not using the --force flag.

@benebsiny
Copy link
Contributor Author

benebsiny commented Nov 13, 2023

@samcoe Thanks for your feedback!

The reason why I add git.HasCommonAncestorAncestor is to distinguish the mismatchRemotesError and divergingError. The
HasCommonAncestor is to check the mismatchRemotesError, and git.IsAncestor is to check the divergingError.

In my opinion, mismatchRemotesError should be raised when the --source has nothing to do with the local repo, and the divergingError should be raised when the --source and the local are diverged.


Consider this case:
If the local is 1 commit behind the remote, and then I create a new commit at local. Next, I try the sync command with source flag, the git.HasCommonAncestor will return true. Thus mismatchRemotesError will not be raised. And git.IsAncestor will return false, so the divergingError will be raised.


Another case:
The --source has nothing to do with the local, the git.HasCommonAncestor should return false, so the mismatchRemotesError is thrown.

@samcoe
Copy link
Contributor

samcoe commented Nov 16, 2023

@benebsiny Thanks for the explanation, I understand better now.

In my opinion, mismatchRemotesError should be raised when the --source has nothing to do with the local repo, and the divergingError should be raised when the --source and the local are diverged.

I think this is where we are diverging a bit. I think this is overly defensive behavior from gh. The user configured their remotes, if they have them set up in such a way that they do not align then it is not for gh to complain about. Having mismatching remotes should not prohibit the user from being able to do gh repo sync, they will likely have to use the --force flag but it is their choice to do so.

@benebsiny
Copy link
Contributor Author

@samcoe Thanks for your feedback! I've removed the checking for the mismatchRemotesError. Since there's no usage of mismatchRemotesError, I also remove the mismatchRemotesError variable. Have a look at the latest update.

Copy link
Contributor

@samcoe samcoe left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@benebsiny Thanks for the effort on this PR! I pushed a small polish 💅 commit and I think this is ready to 🚢

@samcoe samcoe enabled auto-merge (squash) November 20, 2023 10:30
@samcoe samcoe merged commit 14a8e03 into cli:trunk Nov 20, 2023
6 checks passed
renovate bot added a commit to scottames/dots that referenced this pull request Nov 28, 2023
[![Mend Renovate logo
banner](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [aquaproj/aqua-registry](https://togithub.com/aquaproj/aqua-registry)
| minor | `v4.88.0` -> `v4.92.2` |
| [charmbracelet/gum](https://togithub.com/charmbracelet/gum) | minor |
`v0.11.0` -> `v0.12.0` |
| [cli/cli](https://togithub.com/cli/cli) | patch | `v2.39.1` ->
`v2.39.2` |
| [mikefarah/yq](https://togithub.com/mikefarah/yq) | minor | `v4.35.2`
-> `v4.40.3` |
| [simulot/immich-go](https://togithub.com/simulot/immich-go) | patch |
`0.8.3` -> `0.8.7` |
| [twpayne/chezmoi](https://togithub.com/twpayne/chezmoi) | minor |
`v2.41.0` -> `v2.42.0` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.

---

### Release Notes

<details>
<summary>aquaproj/aqua-registry (aquaproj/aqua-registry)</summary>

###
[`v4.92.2`](https://togithub.com/aquaproj/aqua-registry/releases/tag/v4.92.2)

[Compare
Source](https://togithub.com/aquaproj/aqua-registry/compare/v4.92.1...v4.92.2)


[Issues](https://togithub.com/aquaproj/aqua-registry/issues?q=is%3Aissue+milestone%3Av4.92.2)
| [Pull
Requests](https://togithub.com/aquaproj/aqua-registry/pulls?q=is%3Apr+milestone%3Av4.92.2)
| aquaproj/aqua-registry@v4.92.1...v4.92.2

#### Fixes


[#&#8203;17677](https://togithub.com/aquaproj/aqua-registry/issues/17677)
MordechaiHadad/bob: Follow up changes of bob v2.7.0

[#&#8203;17678](https://togithub.com/aquaproj/aqua-registry/issues/17678)
particledecay/kconf: Fix old versions

[#&#8203;17679](https://togithub.com/aquaproj/aqua-registry/issues/17679)
blst-security/cherrybomb: Follow up changes of cherrybomb v1.0.1

Related issue:
[blst-security/cherrybomb#153

###
[`v4.92.1`](https://togithub.com/aquaproj/aqua-registry/releases/tag/v4.92.1)

[Compare
Source](https://togithub.com/aquaproj/aqua-registry/compare/v4.92.0...v4.92.1)


[Issues](https://togithub.com/aquaproj/aqua-registry/issues?q=is%3Aissue+milestone%3Av4.92.1)
| [Pull
Requests](https://togithub.com/aquaproj/aqua-registry/pulls?q=is%3Apr+milestone%3Av4.92.1)
| aquaproj/aqua-registry@v4.92.0...v4.92.1

#### Fixes


[#&#8203;17667](https://togithub.com/aquaproj/aqua-registry/issues/17667)
git-town/git-town: Follow up changes of git-town v10.0.3

[#&#8203;17653](https://togithub.com/aquaproj/aqua-registry/issues/17653)
hktalent/scan4all: Transfer the repository to GhostTroops/scan4all

The GitHub Repository of the package "hktalent/scan4all" was transferred
from [hktalent/scan4all](https://togithub.com/hktalent/scan4all) to
[GhostTroops/scan4all](https://togithub.com/GhostTroops/scan4all)


[#&#8203;17622](https://togithub.com/aquaproj/aqua-registry/issues/17622)
FiloSottile/age: Enable windows_arm_emulation

###
[`v4.92.0`](https://togithub.com/aquaproj/aqua-registry/releases/tag/v4.92.0)

[Compare
Source](https://togithub.com/aquaproj/aqua-registry/compare/v4.91.0...v4.92.0)


[Issues](https://togithub.com/aquaproj/aqua-registry/issues?q=is%3Aissue+milestone%3Av4.92.0)
| [Pull
Requests](https://togithub.com/aquaproj/aqua-registry/pulls?q=is%3Apr+milestone%3Av4.92.0)
| aquaproj/aqua-registry@v4.91.0...v4.92.0

#### 🎉 New Packages


[#&#8203;17534](https://togithub.com/aquaproj/aqua-registry/issues/17534)
[bensadeh/tailspin](https://togithub.com/bensadeh/tailspin): A log file
highlighter
[@&#8203;hituzi-no-sippo](https://togithub.com/hituzi-no-sippo)

:warning: The package `crates.io/tailspin` was merged to
`bensadeh/tailspin`.


[#&#8203;17565](https://togithub.com/aquaproj/aqua-registry/issues/17565)
[suzuki-shunsuke/nllint](https://togithub.com/suzuki-shunsuke/nllint):
Linter to check newlines at the end of files

###
[`v4.91.0`](https://togithub.com/aquaproj/aqua-registry/releases/tag/v4.91.0)

[Compare
Source](https://togithub.com/aquaproj/aqua-registry/compare/v4.90.0...v4.91.0)


[Issues](https://togithub.com/aquaproj/aqua-registry/issues?q=is%3Aissue+milestone%3Av4.91.0)
| [Pull
Requests](https://togithub.com/aquaproj/aqua-registry/pulls?q=is%3Apr+milestone%3Av4.91.0)
| aquaproj/aqua-registry@v4.90.0...v4.91.0

#### 🎉 New Packages


[#&#8203;17529](https://togithub.com/aquaproj/aqua-registry/issues/17529)
[bazelbuild/bazelisk](https://togithub.com/bazelbuild/bazelisk): A
user-friendly launcher for Bazel
[@&#8203;monaka](https://togithub.com/monaka)

#### Others


[#&#8203;17528](https://togithub.com/aquaproj/aqua-registry/issues/17528)
chore(cmdx): fix cmdx remove to be able to delete Docker container
[@&#8203;hituzi-no-sippo](https://togithub.com/hituzi-no-sippo)

###
[`v4.90.0`](https://togithub.com/aquaproj/aqua-registry/releases/tag/v4.90.0)

[Compare
Source](https://togithub.com/aquaproj/aqua-registry/compare/v4.89.0...v4.90.0)


[Issues](https://togithub.com/aquaproj/aqua-registry/issues?q=is%3Aissue+milestone%3Av4.90.0)
| [Pull
Requests](https://togithub.com/aquaproj/aqua-registry/pulls?q=is%3Apr+milestone%3Av4.90.0)
| aquaproj/aqua-registry@v4.89.0...v4.90.0

#### 🎉 New Packages


[#&#8203;17521](https://togithub.com/aquaproj/aqua-registry/issues/17521)
[fujiwara/grpcp](https://togithub.com/fujiwara/grpcp): gRPC stream file
transfer server/client [@&#8203;ponkio-o](https://togithub.com/ponkio-o)

#### Fixes


[#&#8203;17526](https://togithub.com/aquaproj/aqua-registry/issues/17526)
Melkeydev/go-blueprint: Follow up changes of go-blueprint v0.3.1

Asset names were changed.
[Melkeydev/go-blueprint#117

#### Others


[#&#8203;17525](https://togithub.com/aquaproj/aqua-registry/issues/17525)
style(scripts): convert indent from spaces to tabs
[@&#8203;hituzi-no-sippo](https://togithub.com/hituzi-no-sippo)

###
[`v4.89.0`](https://togithub.com/aquaproj/aqua-registry/releases/tag/v4.89.0)

[Compare
Source](https://togithub.com/aquaproj/aqua-registry/compare/v4.88.0...v4.89.0)


[Issues](https://togithub.com/aquaproj/aqua-registry/issues?q=is%3Aissue+milestone%3Av4.89.0)
| [Pull
Requests](https://togithub.com/aquaproj/aqua-registry/pulls?q=is%3Apr+milestone%3Av4.89.0)
| aquaproj/aqua-registry@v4.88.0...v4.89.0

#### 🎉 New Packages


[#&#8203;17466](https://togithub.com/aquaproj/aqua-registry/issues/17466)
[self-actuated/actuated-cli](https://togithub.com/self-actuated/actuated-cli):
CLI for actuated [@&#8203;ponkio-o](https://togithub.com/ponkio-o)

</details>

<details>
<summary>charmbracelet/gum (charmbracelet/gum)</summary>

###
[`v0.12.0`](https://togithub.com/charmbracelet/gum/releases/tag/v0.12.0)

[Compare
Source](https://togithub.com/charmbracelet/gum/compare/v0.11.0...v0.12.0)

### Gum Log 🪵

Version 0.12.0 of gum features a brand new `log` command. Gum `log` logs
messages to the terminal at using different levels and styling using the
[`charmbracelet/log`](https://togithub.com/charmbracelet/log) library.

To get started, simply run:

    gum log

```bash

### Log some debug information.
gum log --structured --level debug "Creating file..." name file.txt

### DEBUG Unable to create file. name=temp.txt
### Log some error.
gum log --structured --level error "Unable to create file." name file.txt

### ERROR Unable to create file. name=temp.txt
```

See [`charmbracelet/log`](https://togithub.com/charmbracelet/log) for
more usage.

<img src="https://vhs.charm.sh/vhs-6jupuFM0s2fXiUrBE0I1vU.gif"
width="600" alt="Running gum log with debug and error levels" />

#### What's Changed

- Pretty Table Print by
[@&#8203;maaslalani](https://togithub.com/maaslalani) in
[charmbracelet/gum#436
- Log command by
[@&#8203;aymanbagabas](https://togithub.com/aymanbagabas) in
[charmbracelet/gum#449
- Avoid reading from stdin if `--value` is being used by
[@&#8203;piero-vic](https://togithub.com/piero-vic) in
[charmbracelet/gum#448
- Made filter work with lists as choose by
[@&#8203;MikaelFangel](https://togithub.com/MikaelFangel) in
[charmbracelet/gum#424

#### New Contributors

- [@&#8203;cglong](https://togithub.com/cglong) made their first
contribution in
[charmbracelet/gum#401
- [@&#8203;docwhat](https://togithub.com/docwhat) made their first
contribution in
[charmbracelet/gum#433
- [@&#8203;piero-vic](https://togithub.com/piero-vic) made their first
contribution in
[charmbracelet/gum#448

**Full Changelog**:
charmbracelet/gum@v0.11.0...v0.12.0

***

<a href="https://charm.sh/"><img alt="The Charm logo"
src="https://stuff.charm.sh/charm-badge.jpg" width="400"></a>

Thoughts? Questions? We love hearing from you. Feel free to reach out on
[Twitter](https://twitter.com/charmcli), [The
Fediverse](https://mastodon.technology/@&#8203;charm), or on
[Discord](https://charm.sh/chat).

</details>

<details>
<summary>cli/cli (cli/cli)</summary>

### [`v2.39.2`](https://togithub.com/cli/cli/releases/tag/v2.39.2):
GitHub CLI 2.39.2

[Compare Source](https://togithub.com/cli/cli/compare/v2.39.1...v2.39.2)

#### What's Changed

- build(deps): bump github.com/creack/pty from 1.1.20 to 1.1.21 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[cli/cli#8345
- `gh repo sync` should be able to sync a local branch with an upstream
remote by [@&#8203;benebsiny](https://togithub.com/benebsiny) in
[cli/cli#8229
- Update to latest go-gh by
[@&#8203;samcoe](https://togithub.com/samcoe) in
[cli/cli#8359
- Fix project status unmarshaling by
[@&#8203;williammartin](https://togithub.com/williammartin) in
[cli/cli#8384

**Full Changelog**: cli/cli@v2.39.1...v2.39.2

</details>

<details>
<summary>mikefarah/yq (mikefarah/yq)</summary>

### [`v4.40.3`](https://togithub.com/mikefarah/yq/releases/tag/v4.40.3):
- Fixes JSON empty array bug

[Compare
Source](https://togithub.com/mikefarah/yq/compare/v4.40.2...v4.40.3)

- Fixed JSON output issue with empty arrays
[#&#8203;1880](https://togithub.com/mikefarah/yq/issues/1880)

### [`v4.40.2`](https://togithub.com/mikefarah/yq/releases/tag/v4.40.2):
- Official

[Compare
Source](https://togithub.com/mikefarah/yq/compare/v4.40.1...v4.40.2)

Thank you for all your support! I've fixed some of the issues that were
kindly raised :) Happy to make the release official!

- Do not panic when StdIn is closed
([#&#8203;1867](https://togithub.com/mikefarah/yq/issues/1867)) Thanks
[@&#8203;aleskandro](https://togithub.com/aleskandro)!
- Fixed issue when update against self
[#&#8203;1869](https://togithub.com/mikefarah/yq/issues/1869)
- Fixed multi doc anchor bug
[#&#8203;1861](https://togithub.com/mikefarah/yq/issues/1861)
- Fixes doc line separator issue when reading expression file
[#&#8203;1860](https://togithub.com/mikefarah/yq/issues/1860)
-   Bumped dependencies

### [`v4.40.1`](https://togithub.com/mikefarah/yq/releases/tag/v4.40.1):
- Engine refactor

[Compare
Source](https://togithub.com/mikefarah/yq/compare/v4.35.2...v4.40.1)

I've done some overdue work on refactoring the core engine - pulling out
the dependency on go-yaml. There are a couple of slight output changes
(whitespace / document separators) in some niche scenarios - I think
they are improvements, Bit nervous on releasing this, but all the tests
are passing and I've added more tests! Love some early feedback :)

-   Added tonumber support
-   Added kind operator
- Lua output fixes
([#&#8203;1811](https://togithub.com/mikefarah/yq/issues/1811)) - Thanks
[@&#8203;Zash](https://togithub.com/Zash)!
- Add support for Lua input
([#&#8203;1810](https://togithub.com/mikefarah/yq/issues/1810)) - Thanks
[@&#8203;Zash](https://togithub.com/Zash)!
-   Bumped dependencies

</details>

<details>
<summary>simulot/immich-go (simulot/immich-go)</summary>

###
[`v0.8.7`](https://togithub.com/simulot/immich-go/releases/tag/0.8.7)

[Compare
Source](https://togithub.com/simulot/immich-go/compare/0.8.6...0.8.7)

#### Changelog

- [`875d965`](https://togithub.com/simulot/immich-go/commit/875d965)
improvment: log can be written to log files
- [`2546712`](https://togithub.com/simulot/immich-go/commit/2546712)
more information on the log
- [`7cd5d6e`](https://togithub.com/simulot/immich-go/commit/7cd5d6e)
remove .MP from accepted files

###
[`v0.8.6`](https://togithub.com/simulot/immich-go/releases/tag/0.8.6)

[Compare
Source](https://togithub.com/simulot/immich-go/compare/0.8.5...0.8.6)

#### Release 0.8.6

##### fix for
[#&#8203;68](https://togithub.com/simulot/immich-go/issues/68): A lot of
images skipped from Google Photos Takeout

The Google takeout archive is full of traps. The difficulty is to
associate all images with a JSON.
Now more files are now imported. There still few missing files, but they
are now listed.

The program now reports how files are handled, or discarded.

    Upload report:
     53998 scanned files
     53993 handled files
     26937 metadata files
       535 uploaded files on the server
        49 upgraded files on the server
      1540 duplicated files in the input
      8382 files already on the server
        77 discarded files because in folder failed videos
         1 discarded files because of options
     16470 discarded files because server has a better image
         1 files type not supported
         1 errors
         5 files without metadata file
    7 files can't be handled
File: Takeout/Google Photos/Photos from
2019/1556189729458-8d2e2d13-bca5-467e-a242-9e4cb238e(1).jpg
            File unhandled, missing JSON
File: Takeout/Google Photos/Photos from
2022/original_1d4caa6f-16c6-4c3d-901b-9387de10e528_P(1).jpg
            File unhandled, missing JSON
File: Takeout/Google Photos/Photos from
2022/original_af12c386-e334-4c57-88be-fdfadea71f16_P(1).jpg
            File unhandled, missing JSON
File: Takeout/Google Photos/Photos from
2022/original_ec8d7b93-cbec-49c8-8707-38841db5e37d_P(1).jpg
            File unhandled, missing JSON
File: Takeout/Google Photos/Photos from
2023/original_d3671642-c937-49c0-917a-8ef9cbb449c5_P(1).jpg
            File unhandled, missing JSON
    File: Takeout/Google Photos/user-generated-memory-titles.json
Error , json: cannot unmarshal array into Go struct field
GoogleMetaData.title of type string
    File: Takeout/archive_browser.html
            File type not supported
    Done.

The plenty of rules for associating image to JSON are somewhat
contradictory. I have to rethink the system for applying\
rules from the most common to the strangest ones.

Still lot of work to deliver.

#### Changelog

- [`fde9232`](https://togithub.com/simulot/immich-go/commit/fde9232)
[#&#8203;68](https://togithub.com/simulot/immich-go/issues/68): MP files
- [`1e7e316`](https://togithub.com/simulot/immich-go/commit/1e7e316)
[#&#8203;68](https://togithub.com/simulot/immich-go/issues/68): better
error report
- [`ef9958a`](https://togithub.com/simulot/immich-go/commit/ef9958a)
[#&#8203;68](https://togithub.com/simulot/immich-go/issues/68): handling
edge cases
- [`9a09501`](https://togithub.com/simulot/immich-go/commit/9a09501)
Merge branch
'Fix-for-[#&#8203;78](https://togithub.com/simulot/immich-go/issues/78)-mp4-files-do-not-get-imported'
into
[#&#8203;68](https://togithub.com/simulot/immich-go/issues/68)-Lot-of-images-is-missing
- [`50c5bdf`](https://togithub.com/simulot/immich-go/commit/50c5bdf) WIP
[#&#8203;68](https://togithub.com/simulot/immich-go/issues/68)
- [`68d4d40`](https://togithub.com/simulot/immich-go/commit/68d4d40)
edit release.md
- [`6f26ece`](https://togithub.com/simulot/immich-go/commit/6f26ece)
wip: better upload report

###
[`v0.8.5`](https://togithub.com/simulot/immich-go/releases/tag/0.8.5)

[Compare
Source](https://togithub.com/simulot/immich-go/compare/0.8.4...0.8.5)

#### Changelog

- [`b8827c8`](https://togithub.com/simulot/immich-go/commit/b8827c8) fix
for [#&#8203;78](https://togithub.com/simulot/immich-go/issues/78):
mp4-files do not get imported

###
[`v0.8.4`](https://togithub.com/simulot/immich-go/releases/tag/0.8.4)

[Compare
Source](https://togithub.com/simulot/immich-go/compare/0.8.3...0.8.4)

#### Changelog

- [`edc40a3`](https://togithub.com/simulot/immich-go/commit/edc40a3)
doc: edit release.md
- [`071b52d`](https://togithub.com/simulot/immich-go/commit/071b52d) fix
[#&#8203;67](https://togithub.com/simulot/immich-go/issues/67): Live
photos files are stacked and not recognized as live photos
- [`fd62fa8`](https://togithub.com/simulot/immich-go/commit/fd62fa8)
implement include / exclude options
- [`f36888b`](https://togithub.com/simulot/immich-go/commit/f36888b) wip
[#&#8203;67](https://togithub.com/simulot/immich-go/issues/67)
- [`b93ceab`](https://togithub.com/simulot/immich-go/commit/b93ceab) wip
[#&#8203;67](https://togithub.com/simulot/immich-go/issues/67):
implement Live photos for folders
- [`d959c75`](https://togithub.com/simulot/immich-go/commit/d959c75) wip
[#&#8203;67](https://togithub.com/simulot/immich-go/issues/67):
implement live photos for google takeouts
- [`c214a49`](https://togithub.com/simulot/immich-go/commit/c214a49)
wip: rename package assets in browser

</details>

<details>
<summary>twpayne/chezmoi (twpayne/chezmoi)</summary>

###
[`v2.42.0`](https://togithub.com/twpayne/chezmoi/releases/tag/v2.42.0)

[Compare
Source](https://togithub.com/twpayne/chezmoi/compare/v2.41.0...v2.42.0)

#### Changelog

##### Features

- [`694977b`](https://togithub.com/twpayne/chezmoi/commit/694977b90)
feat: Preserve numeric types when reading from .chezmoidata JSON and
JSONC files
- [`1f11386`](https://togithub.com/twpayne/chezmoi/commit/1f1138688)
feat: Preserve integer values in fromJson and fromJsonc template funcs
- [`711a39a`](https://togithub.com/twpayne/chezmoi/commit/711a39a73)
feat: Add read-source-state hook

##### Documentation updates

- [`47609a3`](https://togithub.com/twpayne/chezmoi/commit/47609a3d7)
docs: Add admonitions linking remove and forget
- [`8784a67`](https://togithub.com/twpayne/chezmoi/commit/8784a6713)
docs: Add links to blog posts

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "after 4pm on thursday" in timezone
America/Los_Angeles, Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config help](https://togithub.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/scottames/dots).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy41OS44IiwidXBkYXRlZEluVmVyIjoiMzcuNTkuOCIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
external pull request originating outside of the CLI core team
Projects
No open projects
The GitHub CLI
  
Needs review 🤔
Development

Successfully merging this pull request may close these issues.

gh repo sync should be able to sync a local branch with an upstream remote
3 participants