posit-dev / publisher

MIT License
3 stars 0 forks source link

Exclude `.Rproj` by default for R projects? #1633

Open jonkeane opened 2 months ago

jonkeane commented 2 months ago

This is a nice-to-have, but we should probably exclude .RProj and other similar files (like .Rhistory) by default for R content

dotNomad commented 2 months ago

Do you believe these should be part of the permanent exclusions that users cannot include?

Or is this part of a feature request to start with something more specific than files = ['*'] for Configuration files?


We've discussed defaulting to all files included to help with collaboration, and the RProj file seems helpful for that.

jonkeane commented 2 months ago

Or is this part of a feature request to start with something more specific than files = ['*'] for Configuration files?

It is definitely part of that feature request. We can bundle / discuss there. I'm poking at things and trying to note things that seem a bit off as I'm poking (sorry if this is more noise!)

We've discussed defaulting to all files included to help with collaboration, and the RProj file seems helpful for that.

nods sorry I should have been more specific here. I was thinking about the .Rproj.user and IIRC there are a few other kinds like that on top of things like .Rhistory also .Rprofile could be risky (it sometimes has secrets), but also has legit uses for being checked sent to Connect — though I actually would need to double check that Connect respects .Rprofiles if they are sent. But not the project.Rproj file here, which like you say can be helpful for collaboration.

Do you believe these should be part of the permanent exclusions that users cannot include?

Hmmm, for some I think yes, for others no, something we'll have to think about file by file.

mmarchetti commented 2 months ago

This is the current built-in exclusion list:

var StandardExclusions = []string{
    // From rsconnect-python
    "!.Rproj.user/",
    "!.git/",
    "!.svn/",
    "!__pycache__/",
    "!packrat/",
    "!rsconnect-python/",
    "!rsconnect/",

    // From rsconnect
    "!.DS_Store",
    "!.Rhistory",
    "!.quarto/",
    // Less precise than rsconnect, which checks for a
    // matching Rmd filename in the same directory.
    "!*_cache/",

    // Other
    "!.ipynb_checkpoints/",

    // Exclude existing manifest.json; we will create one.
    "!manifest.json",

    // renv library cannot be included; Connect doesn't need it
    // and it's probably the wrong platform anyway.
    "!renv/library",
}

That could be slimmed down, and some of the entries moved to the default-generated configuration files section.

We have to exclude a few of these for correctness or performance reasons, but some of them could be exclude-by-default allowing the user to opt into sending them.