-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Implement fsevents #1419
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
Implement fsevents #1419
Conversation
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
22254fd
to
1f66783
Compare
4c5cf91
to
f9afcc8
Compare
f0014f9
to
a77b176
Compare
e54ba2b
to
6f09f04
Compare
fb0f532
to
2d2f3d1
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Part one: the stuff that isn't filewatcher
.
cli/Makefile
Outdated
@@ -15,7 +15,7 @@ SRC_FILES = $(shell find . -name "*.go" | grep -v "_test.go") | |||
GENERATED_FILES = internal/turbodprotocol/turbod.pb.go internal/turbodprotocol/turbod_grpc.pb.go | |||
|
|||
turbo: $(GENERATED_FILES) $(SRC_FILES) go.mod | |||
CGO_ENABLED=0 go build $(GO_FLAGS) ./cmd/turbo | |||
CGO_ENABLED=1 go build $(GO_FLAGS) ./cmd/turbo |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We need to make this platform-dependent.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
All but the backends.
@@ -24,16 +19,56 @@ var _ignores = []string{".git", "node_modules"} | |||
// 1) do not need synchronization | |||
// 2) should minimize the work they are doing when called, if possible | |||
type FileWatchClient interface { | |||
OnFileWatchEvent(ev fsnotify.Event) | |||
OnFileWatchEvent(ev Event) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I like that we're now controlling our own events.
|
||
const ( | ||
// FileAdded - this is a new file | ||
FileAdded FileEvent = iota |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
// Start recursively adds all directories from the repo root, redacts the excluded ones, | ||
// then fires off a goroutine to respond to filesystem events | ||
func (fw *FileWatcher) Start() error { | ||
if err := fw.watchRecursively(fw.repoRoot); err != nil { | ||
if err := fw.backend.AddRoot(fw.repoRoot, fw.excludePattern); err != nil { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a really nice "understand the thing" ergonomics change. Yes, it was required to do what you did, but now low-level implementation details are hidden in a function call.
@@ -76,13 +58,29 @@ func expectNoFilesystemEvent(t *testing.T, ch <-chan struct{}) { | |||
} else { | |||
t.Error("filewatching closed unexpectedly") | |||
} | |||
case <-time.After(100 * time.Millisecond): | |||
case <-time.After(500 * time.Millisecond): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Glad that this is single-invocation.
@@ -102,64 +100,54 @@ func TestFileWatching(t *testing.T) { | |||
// child/ | |||
// sibling/ | |||
|
|||
watcher, err := fsnotify.NewWatcher() | |||
watcher, err := GetPlatformSpecificBackend(logger) | |||
assert.NilError(t, err, "NewWatcher") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some renaming in this area.
got := c.createEvents[len(c.createEvents)-1] | ||
c.mu.Unlock() | ||
assert.DeepEqual(t, got, expectedEvent) | ||
// Windows doesn't watch individual files, only directories |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a nice smoothing-over of the API.
type watchAddMode int | ||
|
||
const ( | ||
dontSynthesizeEvents watchAddMode = iota |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not going to iota + 1
since the values here map well to true/false.
[](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [turbo](https://turborepo.org) ([source](https://togithub.com/vercel/turborepo)) | [`1.3.1` -> `1.3.4`](https://renovatebot.com/diffs/npm/turbo/1.3.1/1.3.4) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>vercel/turborepo</summary> ### [`v1.3.4`](https://togithub.com/vercel/turborepo/releases/tag/v1.3.4) [Compare Source](https://togithub.com/vercel/turborepo/compare/v1.3.3...v1.3.4) #### What's Changed - fix(deps): update dependency [@​react-types/radio](https://togithub.com/react-types/radio) to v3.2.1 by [@​renovate](https://togithub.com/renovate) in [https://github.com/vercel/turborepo/pull/1553](https://togithub.com/vercel/turborepo/pull/1553) - Move fixtures to correct directory. by [@​nathanhammond](https://togithub.com/nathanhammond) in [https://github.com/vercel/turborepo/pull/1561](https://togithub.com/vercel/turborepo/pull/1561) - fix(cli): don’t exit when no tasks are found by [@​tknickman](https://togithub.com/tknickman) in [https://github.com/vercel/turborepo/pull/1564](https://togithub.com/vercel/turborepo/pull/1564) **Full Changelog**: vercel/turborepo@v1.3.3...v1.3.4 ### [`v1.3.3`](https://togithub.com/vercel/turborepo/releases/tag/v1.3.3) [Compare Source](https://togithub.com/vercel/turborepo/compare/v1.3.2...v1.3.3) #### What's Changed - fix(create-turbo): pnpm peer deps error by [@​tknickman](https://togithub.com/tknickman) in [https://github.com/vercel/turborepo/pull/1559](https://togithub.com/vercel/turborepo/pull/1559) **Full Changelog**: vercel/turborepo@v1.3.2...v1.3.3 ### [`v1.3.2`](https://togithub.com/vercel/turborepo/releases/tag/v1.3.2) [Compare Source](https://togithub.com/vercel/turborepo/compare/v1.3.1...v1.3.2) #### Core - Update schema generation script invocation. by [@​nathanhammond](https://togithub.com/nathanhammond) in [https://github.com/vercel/turborepo/pull/1436](https://togithub.com/vercel/turborepo/pull/1436) - fix(cli): cache with correct file perms by [@​tknickman](https://togithub.com/tknickman) in [https://github.com/vercel/turborepo/pull/1429](https://togithub.com/vercel/turborepo/pull/1429) - Watch task outputs to avoid cache restorations by [@​gsoltis](https://togithub.com/gsoltis) in [https://github.com/vercel/turborepo/pull/1269](https://togithub.com/vercel/turborepo/pull/1269) - Vendor chrometracing, add Close method by [@​gsoltis](https://togithub.com/gsoltis) in [https://github.com/vercel/turborepo/pull/1443](https://togithub.com/vercel/turborepo/pull/1443) - Fix symlink mode check. by [@​nathanhammond](https://togithub.com/nathanhammond) in [https://github.com/vercel/turborepo/pull/1447](https://togithub.com/vercel/turborepo/pull/1447) - Fix hashing uncommitted changes by [@​gsoltis](https://togithub.com/gsoltis) in [https://github.com/vercel/turborepo/pull/1448](https://togithub.com/vercel/turborepo/pull/1448) - Cross-compile amd64. by [@​nathanhammond](https://togithub.com/nathanhammond) in [https://github.com/vercel/turborepo/pull/1452](https://togithub.com/vercel/turborepo/pull/1452) - fix(cli): prefer IsDir() over explicit type check by [@​tknickman](https://togithub.com/tknickman) in [https://github.com/vercel/turborepo/pull/1445](https://togithub.com/vercel/turborepo/pull/1445) - Add test to confirm that file copying works as expected. by [@​nathanhammond](https://togithub.com/nathanhammond) in [https://github.com/vercel/turborepo/pull/1450](https://togithub.com/vercel/turborepo/pull/1450) - fix: remove suggestion of using fetch-depth by [@​harshcut](https://togithub.com/harshcut) in [https://github.com/vercel/turborepo/pull/1438](https://togithub.com/vercel/turborepo/pull/1438) - Chip away at path migration by [@​gsoltis](https://togithub.com/gsoltis) in [https://github.com/vercel/turborepo/pull/1459](https://togithub.com/vercel/turborepo/pull/1459) - Implement allowing both sides of git comparison by [@​gsoltis](https://togithub.com/gsoltis) in [https://github.com/vercel/turborepo/pull/1442](https://togithub.com/vercel/turborepo/pull/1442) - Move some fields out of Config by [@​gsoltis](https://togithub.com/gsoltis) in [https://github.com/vercel/turborepo/pull/1460](https://togithub.com/vercel/turborepo/pull/1460) - chore: remove redundant `.turbo` by [@​shayc](https://togithub.com/shayc) in [https://github.com/vercel/turborepo/pull/1475](https://togithub.com/vercel/turborepo/pull/1475) - Depending on root tasks should work by [@​gsoltis](https://togithub.com/gsoltis) in [https://github.com/vercel/turborepo/pull/1485](https://togithub.com/vercel/turborepo/pull/1485) - Implement filesystem cookies for filewatch ordering by [@​gsoltis](https://togithub.com/gsoltis) in [https://github.com/vercel/turborepo/pull/1410](https://togithub.com/vercel/turborepo/pull/1410) - Label root package in dependency graph by [@​gsoltis](https://togithub.com/gsoltis) in [https://github.com/vercel/turborepo/pull/1491](https://togithub.com/vercel/turborepo/pull/1491) - Implement fsevents by [@​gsoltis](https://togithub.com/gsoltis) in [https://github.com/vercel/turborepo/pull/1419](https://togithub.com/vercel/turborepo/pull/1419) - Bug: Fix logic that wipes out part of the config by [@​StevenMatchett](https://togithub.com/StevenMatchett) in [https://github.com/vercel/turborepo/pull/1527](https://togithub.com/vercel/turborepo/pull/1527) - Add schema.json to create-turbo templates by [@​jaredpalmer](https://togithub.com/jaredpalmer) in [https://github.com/vercel/turborepo/pull/1537](https://togithub.com/vercel/turborepo/pull/1537) - Filter in package by [@​nathanhammond](https://togithub.com/nathanhammond) in [https://github.com/vercel/turborepo/pull/1538](https://togithub.com/vercel/turborepo/pull/1538) #### Internal - Ensure we fail if no examples are run by [@​gsoltis](https://togithub.com/gsoltis) in [https://github.com/vercel/turborepo/pull/1441](https://togithub.com/vercel/turborepo/pull/1441) - Bump e2e pnpm to 7 by [@​gsoltis](https://togithub.com/gsoltis) in [https://github.com/vercel/turborepo/pull/1444](https://togithub.com/vercel/turborepo/pull/1444) - Add missing dependencies to OSX setup by [@​trevorr](https://togithub.com/trevorr) in [https://github.com/vercel/turborepo/pull/1487](https://togithub.com/vercel/turborepo/pull/1487) - Add golang to OSX setup by [@​neolivz](https://togithub.com/neolivz) in [https://github.com/vercel/turborepo/pull/1492](https://togithub.com/vercel/turborepo/pull/1492) - Configure Renovate by [@​renovate](https://togithub.com/renovate) in [https://github.com/vercel/turborepo/pull/1499](https://togithub.com/vercel/turborepo/pull/1499) - chore(deps): update dependency [@​types/react](https://togithub.com/types/react) to v17.0.47 by [@​renovate](https://togithub.com/renovate) in [https://github.com/vercel/turborepo/pull/1514](https://togithub.com/vercel/turborepo/pull/1514) - chore(deps): update dependency ts-json-schema-generator to v0.98.0 by [@​renovate](https://togithub.com/renovate) in [https://github.com/vercel/turborepo/pull/1516](https://togithub.com/vercel/turborepo/pull/1516) - chore(renovate): support go mod tidy by [@​tknickman](https://togithub.com/tknickman) in [https://github.com/vercel/turborepo/pull/1515](https://togithub.com/vercel/turborepo/pull/1515) - fix(deps): update dependency [@​heroicons/react](https://togithub.com/heroicons/react) to v1.0.6 by [@​renovate](https://togithub.com/renovate) in [https://github.com/vercel/turborepo/pull/1520](https://togithub.com/vercel/turborepo/pull/1520) - chore(deps): update dependency [@​babel/core](https://togithub.com/babel/core) to v7.18.6 by [@​renovate](https://togithub.com/renovate) in [https://github.com/vercel/turborepo/pull/1523](https://togithub.com/vercel/turborepo/pull/1523) - chore(deps): update dependency tailwindcss to v3.1.6 by [@​renovate](https://togithub.com/renovate) in [https://github.com/vercel/turborepo/pull/1529](https://togithub.com/vercel/turborepo/pull/1529) - chore(deps): update dependency autoprefixer to v10.4.7 by [@​renovate](https://togithub.com/renovate) in [https://github.com/vercel/turborepo/pull/1530](https://togithub.com/vercel/turborepo/pull/1530) - chore(deps): update dependency eslint-config-prettier to v8.5.0 by [@​renovate](https://togithub.com/renovate) in [https://github.com/vercel/turborepo/pull/1531](https://togithub.com/vercel/turborepo/pull/1531) - chore(deps): update pnpm/action-setup action to v2.2.2 by [@​renovate](https://togithub.com/renovate) in [https://github.com/vercel/turborepo/pull/1546](https://togithub.com/vercel/turborepo/pull/1546) - chore(deps): update dependency postcss to v8.4.14 by [@​renovate](https://togithub.com/renovate) in [https://github.com/vercel/turborepo/pull/1542](https://togithub.com/vercel/turborepo/pull/1542) - Makefile works for turbobot by [@​nathanhammond](https://togithub.com/nathanhammond) in [https://github.com/vercel/turborepo/pull/1550](https://togithub.com/vercel/turborepo/pull/1550) #### Examples - feat(examples): add svelte by [@​tknickman](https://togithub.com/tknickman) in [https://github.com/vercel/turborepo/pull/1458](https://togithub.com/vercel/turborepo/pull/1458) - Fix `yarn start` not working by [@​elis](https://togithub.com/elis) in [https://github.com/vercel/turborepo/pull/1468](https://togithub.com/vercel/turborepo/pull/1468) - feat(examples): add tailwind by [@​tknickman](https://togithub.com/tknickman) in [https://github.com/vercel/turborepo/pull/1464](https://togithub.com/vercel/turborepo/pull/1464) - fix: added vite.config and fixes for svelte-next.358 by [@​oneezy](https://togithub.com/oneezy) in [https://github.com/vercel/turborepo/pull/1496](https://togithub.com/vercel/turborepo/pull/1496) - chore(examples): update tsconfig declaration val by [@​tknickman](https://togithub.com/tknickman) in [https://github.com/vercel/turborepo/pull/1483](https://togithub.com/vercel/turborepo/pull/1483) - feat(examples): add react-native-web by [@​tknickman](https://togithub.com/tknickman) in [https://github.com/vercel/turborepo/pull/1486](https://togithub.com/vercel/turborepo/pull/1486) - Fix tailwind example by [@​kocisov](https://togithub.com/kocisov) in [https://github.com/vercel/turborepo/pull/1500](https://togithub.com/vercel/turborepo/pull/1500) - feat(examples): add nextjs by [@​tknickman](https://togithub.com/tknickman) in [https://github.com/vercel/turborepo/pull/1506](https://togithub.com/vercel/turborepo/pull/1506) #### Documentation - docs(cli): update contributing.md with new deps by [@​tknickman](https://togithub.com/tknickman) in [https://github.com/vercel/turborepo/pull/1449](https://togithub.com/vercel/turborepo/pull/1449) - Update caching.mdx by [@​chitchu](https://togithub.com/chitchu) in [https://github.com/vercel/turborepo/pull/1482](https://togithub.com/vercel/turborepo/pull/1482) - fix(docs): update prune compatibility by [@​tknickman](https://togithub.com/tknickman) in [https://github.com/vercel/turborepo/pull/1505](https://togithub.com/vercel/turborepo/pull/1505) - Typo: verifcation --> verification by [@​samouri](https://togithub.com/samouri) in [https://github.com/vercel/turborepo/pull/1517](https://togithub.com/vercel/turborepo/pull/1517) - Add `with-prisma` example by [@​NuroDev](https://togithub.com/NuroDev) in [https://github.com/vercel/turborepo/pull/979](https://togithub.com/vercel/turborepo/pull/979) - feat(examples): add cra by [@​tknickman](https://togithub.com/tknickman) in [https://github.com/vercel/turborepo/pull/1504](https://togithub.com/vercel/turborepo/pull/1504) - Examples fast follows by [@​tknickman](https://togithub.com/tknickman) in [https://github.com/vercel/turborepo/pull/1526](https://togithub.com/vercel/turborepo/pull/1526) - feat(examples): add docker by [@​tknickman](https://togithub.com/tknickman) in [https://github.com/vercel/turborepo/pull/1522](https://togithub.com/vercel/turborepo/pull/1522) - chore(examples): clean the kitchen (sink) by [@​tknickman](https://togithub.com/tknickman) in [https://github.com/vercel/turborepo/pull/1534](https://togithub.com/vercel/turborepo/pull/1534) - \[example/kitchensink] allow accessing vite on any ip/hostname by [@​zsoldosp](https://togithub.com/zsoldosp) in [https://github.com/vercel/turborepo/pull/1532](https://togithub.com/vercel/turborepo/pull/1532) - chore(docs): improvements by [@​tknickman](https://togithub.com/tknickman) in [https://github.com/vercel/turborepo/pull/1540](https://togithub.com/vercel/turborepo/pull/1540) #### New Contributors - [@​harshcut](https://togithub.com/harshcut) made their first contribution in [https://github.com/vercel/turborepo/pull/1438](https://togithub.com/vercel/turborepo/pull/1438) - [@​shayc](https://togithub.com/shayc) made their first contribution in [https://github.com/vercel/turborepo/pull/1475](https://togithub.com/vercel/turborepo/pull/1475) - [@​elis](https://togithub.com/elis) made their first contribution in [https://github.com/vercel/turborepo/pull/1468](https://togithub.com/vercel/turborepo/pull/1468) - [@​chitchu](https://togithub.com/chitchu) made their first contribution in [https://github.com/vercel/turborepo/pull/1482](https://togithub.com/vercel/turborepo/pull/1482) - [@​trevorr](https://togithub.com/trevorr) made their first contribution in [https://github.com/vercel/turborepo/pull/1487](https://togithub.com/vercel/turborepo/pull/1487) - [@​oneezy](https://togithub.com/oneezy) made their first contribution in [https://github.com/vercel/turborepo/pull/1496](https://togithub.com/vercel/turborepo/pull/1496) - [@​neolivz](https://togithub.com/neolivz) made their first contribution in [https://github.com/vercel/turborepo/pull/1492](https://togithub.com/vercel/turborepo/pull/1492) - [@​kocisov](https://togithub.com/kocisov) made their first contribution in [https://github.com/vercel/turborepo/pull/1500](https://togithub.com/vercel/turborepo/pull/1500) - [@​renovate](https://togithub.com/renovate) made their first contribution in [https://github.com/vercel/turborepo/pull/1499](https://togithub.com/vercel/turborepo/pull/1499) - [@​samouri](https://togithub.com/samouri) made their first contribution in [https://github.com/vercel/turborepo/pull/1517](https://togithub.com/vercel/turborepo/pull/1517) - [@​NuroDev](https://togithub.com/NuroDev) made their first contribution in [https://github.com/vercel/turborepo/pull/979](https://togithub.com/vercel/turborepo/pull/979) - [@​zsoldosp](https://togithub.com/zsoldosp) made their first contribution in [https://github.com/vercel/turborepo/pull/1532](https://togithub.com/vercel/turborepo/pull/1532) - [@​StevenMatchett](https://togithub.com/StevenMatchett) made their first contribution in [https://github.com/vercel/turborepo/pull/1527](https://togithub.com/vercel/turborepo/pull/1527) **Full Changelog**: vercel/turborepo@v1.3.1...v1.3.2 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, click this checkbox. --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/singlestone/sugar). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzMi4xMjIuMSIsInVwZGF0ZWRJblZlciI6IjMyLjEyMi4xIn0=-->
Still WIP, but testing w/
FSEvents
now works.Remaining:
backend
package or something