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

Add dotfile repo support #7337

Merged
merged 1 commit into from
Jan 6, 2022
Merged

Add dotfile repo support #7337

merged 1 commit into from
Jan 6, 2022

Conversation

csweichel
Copy link
Contributor

Description

This PR implements dotfile support, whereby a user can provide a "dotfile repo" which gets cloned during workspace startup. We implement exactly what's described in the dotfile RFC.

Related Issue(s)

Fixes #5198

How to test

  1. Go to the preferences and enter a dotfile repo (e.g. https://github.com/Bash-it/bash-it.git)
  2. Start any workspace and notice how the terminal looks different than what you're used to
  3. Inspect $HOME/.dotfiles
  4. Check out the logs of the dotfile installation process: cat ~/.dotfiles.log

Release Notes

Add dotfile repo support

Documentation

Will add an issue once it's clear how this feature will work and if it should land.

@codecov
Copy link

codecov bot commented Dec 21, 2021

Codecov Report

Merging #7337 (43a3123) into main (d8e1eaa) will increase coverage by 17.17%.
The diff coverage is 0.00%.

❗ Current head 43a3123 differs from pull request most recent head f4d5b56. Consider uploading reports for the commit f4d5b56 to get more accurate results
Impacted file tree graph

@@             Coverage Diff             @@
##             main    #7337       +/-   ##
===========================================
+ Coverage   19.04%   36.22%   +17.17%     
===========================================
  Files           2       19       +17     
  Lines         168     4723     +4555     
===========================================
+ Hits           32     1711     +1679     
- Misses        134     2879     +2745     
- Partials        2      133      +131     
Flag Coverage Δ
components-local-app-app-linux-amd64 ?
components-local-app-app-linux-arm64 ?
components-local-app-app-windows-386 ?
components-local-app-app-windows-amd64 ?
components-local-app-app-windows-arm64 ?
components-supervisor-app 36.22% <0.00%> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files Coverage Δ
components/supervisor/pkg/supervisor/config.go 4.23% <ø> (ø)
components/supervisor/pkg/supervisor/supervisor.go 5.33% <0.00%> (ø)
components/local-app/pkg/auth/pkce.go
components/local-app/pkg/auth/auth.go
components/supervisor/pkg/terminal/terminal.go 63.60% <0.00%> (ø)
components/supervisor/pkg/terminal/service.go 32.38% <0.00%> (ø)
components/supervisor/pkg/config/gitpod-config.go 79.46% <0.00%> (ø)
components/supervisor/pkg/dropwriter/dropwriter.go 73.46% <0.00%> (ø)
components/supervisor/pkg/ports/exposed-ports.go 0.00% <0.00%> (ø)
... and 13 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 81372bc...f4d5b56. Read the comment docs.

@csweichel csweichel force-pushed the cw/dotfiles branch 2 times, most recently from d2999a9 to 2ee4e7d Compare December 21, 2021 18:41
@JanKoehnlein
Copy link
Contributor

Awesome work, thanks!

@axonasif
Copy link
Member

axonasif commented Dec 29, 2021

Hello @csweichel. I have a suggestion, it is about using the kernel provided overlayfs to overlay the cloned /home/.dotfiles on top of /home/gitpod as the lower dir instead of using symlinks.

Apart from that, I'm eagarly waiting for the dotfiles support to arrive!

@csweichel
Copy link
Contributor Author

Hello @csweichel. I have a suggestion, it is about using the kernel provided overlayfs to overlay the cloned /home/.dotfiles on top of /home/gitpod as the lower dir instead of using symlinks.

Apart from that, I'm eagarly waiting for the dotfiles support to arrive!

@axonasif Thank you for the feedback. I'm not sure I understand the use-case though; instead it strikes me that that approach comes with some drawbacks which make it unfavourable imho:

  • the overlay would affect the entire $HOME directory and it's unclear what the meaning of the lowerdir would be then
  • akin to the former point, due to the symlinks changes made to the files can be committed back to the repo, with the overlay that would not be so easy
  • the filesystem setup in a workspace is already dangerously complex (shiftfs, fuse-overlayfs, idmapped mounts in the future), and I fret to add another layer to the mix.

@jldec
Copy link
Contributor

jldec commented Dec 29, 2021

I tried this PR with my slightly naive dotfiles repo which just tries to set an alias using .bash_profile
See https://github.com/jldec/dotfiles

I noticed from the .dotfiles.log that we are symlinking the .git directory (bug) and also the README.md file (bug?), but not my .bash_profile (maybe because there is already a .bash_profile in which case the log should show the failure)

gitpod ~ $ cat .dotfiles.log
Cloning into '/home/gitpod/.dotfiles'...
# installation script candidate /home/gitpod/.dotfiles/install.sh is not available
# installation script candidate /home/gitpod/.dotfiles/install is not available
# installation script candidate /home/gitpod/.dotfiles/bootstrap.sh is not available
# installation script candidate /home/gitpod/.dotfiles/bootstrap is not available
# installation script candidate /home/gitpod/.dotfiles/script/bootstrap is not available
# installation script candidate /home/gitpod/.dotfiles/setup.sh is not available
# installation script candidate /home/gitpod/.dotfiles/setup is not available
# installation script candidate /home/gitpod/.dotfiles/script/setup is not available
# echo linking /home/gitpod/.dotfiles/.git/HEAD -> /home/gitpod/.git/HEAD
# echo linking /home/gitpod/.dotfiles/.git/config -> /home/gitpod/.git/config
# echo linking /home/gitpod/.dotfiles/.git/description -> /home/gitpod/.git/description
# echo linking /home/gitpod/.dotfiles/.git/hooks/applypatch-msg.sample -> /home/gitpod/.git/hooks/applypatch-msg.sample
# echo linking /home/gitpod/.dotfiles/.git/hooks/commit-msg.sample -> /home/gitpod/.git/hooks/commit-msg.sample
# echo linking /home/gitpod/.dotfiles/.git/hooks/fsmonitor-watchman.sample -> /home/gitpod/.git/hooks/fsmonitor-watchman.sample
# echo linking /home/gitpod/.dotfiles/.git/hooks/post-update.sample -> /home/gitpod/.git/hooks/post-update.sample
# echo linking /home/gitpod/.dotfiles/.git/hooks/pre-applypatch.sample -> /home/gitpod/.git/hooks/pre-applypatch.sample
# echo linking /home/gitpod/.dotfiles/.git/hooks/pre-commit.sample -> /home/gitpod/.git/hooks/pre-commit.sample
# echo linking /home/gitpod/.dotfiles/.git/hooks/pre-merge-commit.sample -> /home/gitpod/.git/hooks/pre-merge-commit.sample
# echo linking /home/gitpod/.dotfiles/.git/hooks/pre-push.sample -> /home/gitpod/.git/hooks/pre-push.sample
# echo linking /home/gitpod/.dotfiles/.git/hooks/pre-rebase.sample -> /home/gitpod/.git/hooks/pre-rebase.sample
# echo linking /home/gitpod/.dotfiles/.git/hooks/pre-receive.sample -> /home/gitpod/.git/hooks/pre-receive.sample
# echo linking /home/gitpod/.dotfiles/.git/hooks/prepare-commit-msg.sample -> /home/gitpod/.git/hooks/prepare-commit-msg.sample
# echo linking /home/gitpod/.dotfiles/.git/hooks/push-to-checkout.sample -> /home/gitpod/.git/hooks/push-to-checkout.sample
# echo linking /home/gitpod/.dotfiles/.git/hooks/update.sample -> /home/gitpod/.git/hooks/update.sample
# echo linking /home/gitpod/.dotfiles/.git/index -> /home/gitpod/.git/index
# echo linking /home/gitpod/.dotfiles/.git/info/exclude -> /home/gitpod/.git/info/exclude
# echo linking /home/gitpod/.dotfiles/.git/logs/HEAD -> /home/gitpod/.git/logs/HEAD
# echo linking /home/gitpod/.dotfiles/.git/logs/refs/heads/main -> /home/gitpod/.git/logs/refs/heads/main
# echo linking /home/gitpod/.dotfiles/.git/logs/refs/remotes/origin/HEAD -> /home/gitpod/.git/logs/refs/remotes/origin/HEAD
# echo linking /home/gitpod/.dotfiles/.git/objects/pack/pack-9410ec61f4941fa5eb205496cdd147458b33ffbf.idx -> /home/gitpod/.git/objects/pack/pack-9410ec61f4941fa5eb205496cdd147458b33ffbf.idx
# echo linking /home/gitpod/.dotfiles/.git/objects/pack/pack-9410ec61f4941fa5eb205496cdd147458b33ffbf.pack -> /home/gitpod/.git/objects/pack/pack-9410ec61f4941fa5eb205496cdd147458b33ffbf.pack
# echo linking /home/gitpod/.dotfiles/.git/packed-refs -> /home/gitpod/.git/packed-refs
# echo linking /home/gitpod/.dotfiles/.git/refs/heads/main -> /home/gitpod/.git/refs/heads/main
# echo linking /home/gitpod/.dotfiles/.git/refs/remotes/origin/HEAD -> /home/gitpod/.git/refs/remotes/origin/HEAD
# echo linking /home/gitpod/.dotfiles/.git/shallow -> /home/gitpod/.git/shallow
# echo linking /home/gitpod/.dotfiles/README.md -> /home/gitpod/README.md

Beginner Q: If I just wanted to inject aliases with a dotfile, what would be the best way to do that, without overwriting the existing .bashrc in the workspace? Do I need an install script even for something as basic as this?

note: GitHub codespaces does a symlink:
.bash_profile -> /workspaces/.codespaces/.persistedshare/dotfiles/.bash_profile
But the .bash_profile does not appear to be run in each codespaces terminal either. I think this is expected because VS Code terminal are not login shells.

@jldec
Copy link
Contributor

jldec commented Dec 29, 2021

Here's a suggested layout and copy for shipping this PR as Beta, while we work on the repo selection UI (issue #7385).
We should also add a link to the docs as soon as those are available. (gitpod-io/website#1407)
cc: @gtsiolis

Screenshot 2021-12-29 at 17 34 37


Note max-w-2xl for the outer container, and max-w-xl for the input.

Screenshot 2021-12-29 at 17 33 44

@filiptronicek
Copy link
Member

Random idea: on new accounts, we could check their connected git provider (all of them maybe even) and if any turn up with a dotfiles repo, we could have it be there as a default option, so that it makes it even easier to setup.

@axonasif
Copy link
Member

@axonasif Thank you for the feedback. I'm not sure I understand the use-case though; instead it strikes me that that approach comes with some drawbacks which make it unfavourable imho:

  • the overlay would affect the entire $HOME directory and it's unclear what the meaning of the lowerdir would be then
  • akin to the former point, due to the symlinks changes made to the files can be committed back to the repo, with the overlay that would not be so easy
  • the filesystem setup in a workspace is already dangerously complex (shiftfs, fuse-overlayfs, idmapped mounts in the future), and I fret to add another layer to the mix.

Thank you @csweichel for sharing your thoughts on the drawbacks. Now it makes sense to me why symlinks is a better and probably the only option here, couldn't think of a few of the issues you mentioned.

Also I wanted to ask, do you plan to add a subcommand in the gp cli for reapplying the dotfiles? Say I committed some new files in the locally cloned /home/gitpod/.dotfiles or in the remote and I want to make Gitpod run the dotfiles setup again.

@JanKoehnlein
Copy link
Contributor

@gtsiolis could you revise the visuals?

@csweichel
Copy link
Contributor Author

I tried this PR with my slightly naive dotfiles repo which just tries to set an alias using .bash_profile See https://github.com/jldec/dotfiles

I noticed from the .dotfiles.log that we are symlinking the .git directory (bug) and also the README.md file (bug?), but not my .bash_profile (maybe because there is already a .bash_profile in which case the log should show the failure)

Great find - I've pushed a change that should prevent this behaviour, i.e. not symlink the .git directory.

Beginner Q: If I just wanted to inject aliases with a dotfile, what would be the best way to do that, without overwriting the existing .bashrc in the workspace? Do I need an install script even for something as basic as this?

note: GitHub codespaces does a symlink: .bash_profile -> /workspaces/.codespaces/.persistedshare/dotfiles/.bash_profile But the .bash_profile does not appear to be run in each codespaces terminal either. I think this is expected because VS Code terminal are not login shells.

Good question. We could make it the default behaviour for dotfiles repo that they overwrite files when symlinking. That would be more in-line with how install scripts likely behave. WDYT?

@csweichel
Copy link
Contributor Author

Also I wanted to ask, do you plan to add a subcommand in the gp cli for reapplying the dotfiles? Say I committed some new files in the locally cloned /home/gitpod/.dotfiles or in the remote and I want to make Gitpod run the dotfiles setup again.

That would be handy to have. It's not clear however how that would work

  • in case of install scripts because we'd need to assume they're idempotent,
  • with the IDE and its environment in case there are changes to the .bashrc or .bash_profile. Would we restart the IDE to source those changes?

@axonasif
Copy link
Member

axonasif commented Jan 3, 2022

with the IDE and its environment in case there are changes to the .bashrc or .bash_profile. Would we restart the IDE to source those changes?

I think only informing the user about shell configuration changes is enough and that it will be effective for newly created VSCODE terminals, pre-existing terminals would not be effected unless the user explicitly reload shellrc with source ~/.bashrc (or their respective shell specific file). It should be possible to autorun such a command on pre-existing terminals, here is an example: https://github.com/osospeed/ttyecho/, although this might not be a neat thing to do.

Edit: I think I confused myself between restarting IDE and refreshing gitpod browser tab. If the code server is sourcing gitpod user .bashrc then restarting the IDE process may be necessary.

Edit two: Yep, I tried killing all the /ide processes and reloaded the browser tab, new environment variables that I had added to ~/.bashrc was reflected in /ide process environ files. But there is one caveat though, pre-existing terminals were shut down as well or you can say, crashed.

@gtsiolis
Copy link
Contributor

gtsiolis commented Jan 3, 2022

Looking at this now! 👀

Copy link
Contributor

@gtsiolis gtsiolis left a comment

Choose a reason for hiding this comment

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

Looks great, @csweichel! 🔮

Left some minor comments below that could be addressed in the next iteration. ➿

The only non-minor issue relates to the interaction of auto-saving which could be slightly confusing or not crystal clear to the user. However, it could be ok to leave this out of the scope of this PR if we'd like to get this in soon and improve in the next iterations. ❗

Approving to unblock merging but holding in case we'd like to address any comments regarding UX below.

BEFORE AFTER
dotfiles-before dotfiles-after

/hold

<h3 className="mt-12">Dotfiles <PillLabel type="warn" className="font-semibold mt-2 py-0.5 px-2 self-center">Beta</PillLabel></h3>
<p className="text-base text-gray-500 dark:text-gray-400">Customise every workspace using dotfiles. Add a repo below which gets cloned and installed during workspace startup.</p>
<div className="mt-4">
<h4>Repo</h4>
Copy link
Contributor

Choose a reason for hiding this comment

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

suggestion: Looks better as non-abbriviated and more descriptive, no?

Suggested change
<h4>Repo</h4>
<h4>Repository URL</h4>

<p className="text-base text-gray-500 dark:text-gray-400">Customise every workspace using dotfiles. Add a repo below which gets cloned and installed during workspace startup.</p>
<div className="mt-4">
<h4>Repo</h4>
<input type="text" value={dotfileRepo} onChange={(e) => actuallySetDotfileRepo(e.target.value)} className="w-full" />
Copy link
Contributor

Choose a reason for hiding this comment

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

suggestion: What do you think of adding a placeholder as help text here?

Suggested change
<input type="text" value={dotfileRepo} onChange={(e) => actuallySetDotfileRepo(e.target.value)} className="w-full" />
<input type="text" value={dotfileRepo} onChange={(e) => actuallySetDotfileRepo(e.target.value)} className="w-full" placeholder="e.g. https://github.com/username/dotfiles" />

<p className="text-base text-gray-500 dark:text-gray-400">Customise every workspace using dotfiles. Add a repo below which gets cloned and installed during workspace startup.</p>
<div className="mt-4">
<h4>Repo</h4>
<input type="text" value={dotfileRepo} onChange={(e) => actuallySetDotfileRepo(e.target.value)} className="w-full" />
Copy link
Contributor

Choose a reason for hiding this comment

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

question: Will this work when using a repository URL without the .git suffix?

<p className="text-base text-gray-500 dark:text-gray-400">Customise every workspace using dotfiles. Add a repo below which gets cloned and installed during workspace startup.</p>
<div className="mt-4">
<h4>Repo</h4>
<input type="text" value={dotfileRepo} onChange={(e) => actuallySetDotfileRepo(e.target.value)} className="w-full" />
Copy link
Contributor

Choose a reason for hiding this comment

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

issue(non-blocking): Auto-saving the input here happens in the background but is lacking 🅰️ call to action and 🅱️ some user feedback upon save which both will probably be resolved in the second iteration in #7385.

For 🅰️, we could add an action button below to save changes so that users won't be surprized when they accidentally change this input and dotfiles configuration fails, etc. Alternatively, we could introduce a new auto-save pattern that makes it visible to the user that we auto-save on every key press.

For 🅱️, ideally this manual save action would also need some feedback in the user interface so that users can safely acknowledge that the setting has been updated. This could be done with a subtle loading indicator (spinner) inside the button when saving changes that remains visible for a noticeable period of time or using a toast notification (#3530) which can be considered out of the scope of this PR.

<p className="text-base text-gray-500 dark:text-gray-400">Customise every workspace using dotfiles. Add a repo below which gets cloned and installed during workspace startup.</p>
<div className="mt-4">
<h4>Repo</h4>
<input type="text" value={dotfileRepo} onChange={(e) => actuallySetDotfileRepo(e.target.value)} className="w-full" />
Copy link
Contributor

Choose a reason for hiding this comment

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

suggestion: Instead of using the section subtitle to describe this input we could use the already existing pattern of the input help text to make it clear to the user what is expected inside the input.

@@ -153,6 +161,12 @@ export default function Preferences() {
</div>
</SelectableCard>
</div>
<h3 className="mt-12">Dotfiles <PillLabel type="warn" className="font-semibold mt-2 py-0.5 px-2 self-center">Beta</PillLabel></h3>
<p className="text-base text-gray-500 dark:text-gray-400">Customise every workspace using dotfiles. Add a repo below which gets cloned and installed during workspace startup.</p>
Copy link
Contributor

Choose a reason for hiding this comment

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

nitpick: So far, we've generally opted for US English across the dashboard. 🇺🇸

question: Also, what do you think of moving the input help text closer to the input instead of using the section subtitle?

Suggested change
<p className="text-base text-gray-500 dark:text-gray-400">Customise every workspace using dotfiles. Add a repo below which gets cloned and installed during workspace startup.</p>
<p className="text-base text-gray-500 dark:text-gray-400">Customize workspaces using dotfiles.</p>

suggestion: A link to learn more about how this feature works (conventions, installation, etc) to the docs (https://github.com/gitpod-io/website/issues/1407) once the docs are in place could be also nice, as @jldec mentioned in #7337 (comment).

@@ -153,6 +161,12 @@ export default function Preferences() {
</div>
</SelectableCard>
</div>
<h3 className="mt-12">Dotfiles <PillLabel type="warn" className="font-semibold mt-2 py-0.5 px-2 self-center">Beta</PillLabel></h3>
<p className="text-base text-gray-500 dark:text-gray-400">Customise every workspace using dotfiles. Add a repo below which gets cloned and installed during workspace startup.</p>
<div className="mt-4">
Copy link
Contributor

Choose a reason for hiding this comment

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

issue(non-blocking): The max width of the text input element could be limited as also @jldec mentioned in #7337 (comment). I'd suggest to go with max-w-md.

Suggested change
<div className="mt-4">
<div className="mt-4 max-w-md">

@roboquat
Copy link
Contributor

roboquat commented Jan 3, 2022

LGTM label has been added.

Git tree hash: 2a003b3e07decccf2f17e8bd951d9aaa0564dc09

@csweichel
Copy link
Contributor Author

csweichel commented Jan 4, 2022

@csweichel I'm unable to test this feature 😅 , the test url redirects to such a url: https://cw-dotfiles.staging.gitpod-dev.com/sorry#Login%20was%20interrupted:%20Maximum%20number%20of%20users%20permitted%20by%20the%20license%20exceeded

Too many other folks had tried this before :) I've re-deployed the branch with a clean slate. Once that's through you should be able to try this change.

@csweichel csweichel marked this pull request as ready for review January 4, 2022 11:15
@filiptronicek
Copy link
Member

filiptronicek commented Jan 5, 2022

@csweichel I tried authenticating and getting the same redirect URL, basically meaning that my auth popup window never gets closed automatically. Even when trying to auth via GitLab, I can't proceed. Is there any technical limitation I have never encountered or am I just unlucky? 😄

@axonasif
Copy link
Member

axonasif commented Jan 5, 2022

@filiptronicek yeah, it's still the same. I thought it will take some time but no 😅

@csweichel
Copy link
Contributor Author

csweichel commented Jan 5, 2022

/werft run with-clean-slate-deployment

👍 started the job as gitpod-build-cw-dotfiles.18

@nberlette
Copy link

nberlette commented Jan 5, 2022

Just thought I'd chime in on this - when I took this PR for a test drive, the dashboard initially (and erroneously) reported I'd been demoted to free tier. It also appeared to wipe out all workspace data.

I was neither able to get around that obstacle, nor able to even spin up a workspace 🤕... but all my data was right where I left it, once back in the main dashboard.

Sorry, I know this is probably of no help.. but it felt relevant considering the auth issues you encountered. Thx 🙏

@csweichel
Copy link
Contributor Author

csweichel commented Jan 5, 2022

/werft run

👍 started the job as gitpod-build-cw-dotfiles.19

@JanKoehnlein
Copy link
Contributor

JanKoehnlein commented Jan 5, 2022

@csweichel I tried authenticating and getting the same redirect URL, basically meaning that my auth popup window never gets closed automatically. Even when trying to auth via GitLab, I can't proceed. Is there any technical limitation I have never encountered or am I just unlucky? 😄

Same here

@csweichel
Copy link
Contributor Author

@JanKoehnlein @axonasif @filiptronicek I've wiped all users from this installation. Please try again.

@axonasif
Copy link
Member

axonasif commented Jan 5, 2022

@csweichel I was able to login now, will spin up a workspace and let you know how it goes!

Copy link
Member

@filiptronicek filiptronicek left a comment

Choose a reason for hiding this comment

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

I have just tried using my dotfiles (https://github.com/filiptronicek/dotfiles) and am getting interesting results:
every time when starting a workspace, the setup screen keeps on refreshing (e.g. white-wolverine-55vly6wb)

Update: This seems to be happening even without a dotfiles repo...

@@ -364,6 +370,148 @@ func Run(options ...RunOption) {
wg.Wait()
}

func installDotfiles(ctx context.Context, term *terminal.MuxTerminalService, cfg *Config) {
Copy link
Member

Choose a reason for hiding this comment

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

not exactly sure why terminal service is needed here

Copy link
Member

@akosyakov akosyakov left a comment

Choose a reason for hiding this comment

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

/approve
/hold

I have not tried, but supervisor code looks alright, hold since someone should test that it works.

@roboquat
Copy link
Contributor

roboquat commented Jan 5, 2022

LGTM label has been added.

Git tree hash: 7bfb85c69fa5e087d088b71b7c23874c9bd5204c

@roboquat
Copy link
Contributor

roboquat commented Jan 5, 2022

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: akosyakov, gtsiolis

Associated issue: #5198

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@csweichel
Copy link
Contributor Author

Haven't heard anything about this not working. Let's merge and iterate on main.

/hold cancel

@roboquat roboquat merged commit fa0178d into main Jan 6, 2022
@roboquat roboquat deleted the cw/dotfiles branch January 6, 2022 07:45
@filiptronicek
Copy link
Member

Haven't heard anything about this not working. Let's merge and iterate on main.

@csweichel #7337 (review) did you see or experience this one?

@Milo123459
Copy link

What file does it use to boot the dotfiles? Ie, is it like an install.sh?

@filiptronicek
Copy link
Member

@Milo123459 from the RFC:

  1. Installing the dotfiles: we look for a setup script in the cloned dotfile repo using this list:
    - install.sh
    - install
    - bootstrap.sh
    - bootstrap
    - script/bootstrap
    - setup.sh
    - setup
    - script/setup
    If no such script is found, we symlink every file and folder starting with a . from within the cloned repo to /home/gitpod. For example:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved deployed: webapp Meta team change is running in production release-note size/L team: IDE team: webapp Issue belongs to the WebApp team
Projects
No open projects
Archived in project
Development

Successfully merging this pull request may close these issues.

Epic: Personalize workspaces from a user-configurable dotfiles repository
10 participants