Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 85 additions & 0 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
# Contributing to SPSDBMove

Thanks for your interest in improving **SPSDBMove**! This document explains how
to file issues, propose changes, and get your pull request merged.

## Code of Conduct

This project adopts the [Contributor Covenant](../CODE_OF_CONDUCT.md).
By participating you agree to uphold it.

## How to report a bug

1. Search [existing issues](https://github.com/luigilink/SPSDBMove/issues) first
to avoid duplicates.
2. If nothing matches, open a new issue using the
[Bug Report template](https://github.com/luigilink/SPSDBMove/issues/new?template=1_bug_report.yml).
3. Include:
- Exact command line you ran (redact credentials).
- SharePoint version (2016 / 2019 / Subscription Edition).
- SQL Server version of both the source and destination instances.
- PowerShell version (`$PSVersionTable.PSVersion`).
- Full error / log output.

## How to request a feature

Use the
[Feature Request template](https://github.com/luigilink/SPSDBMove/issues/new?template=2_feature_request.yml)
and describe the migration scenario the feature would unlock.

## Development setup

```powershell
# Required modules
Install-Module -Name SqlServer -Scope CurrentUser -Force
Install-Module -Name Pester -MinimumVersion 5.3.0 -Scope CurrentUser -Force
Install-Module -Name PSScriptAnalyzer -Scope CurrentUser -Force

# Clone
git clone https://github.com/luigilink/SPSDBMove.git
cd SPSDBMove
```

Run the test suite before pushing:

```powershell
Invoke-Pester -Path .\tests -Output Detailed
Invoke-ScriptAnalyzer -Path .\scripts -Recurse -Severity Error,Warning
```

## Pull request workflow

1. Fork the repository and create a topic branch from `main`:
`git checkout -b feature/short-description`.
2. Make focused commits. Keep one logical change per commit when possible.
3. **Update `CHANGELOG.md`** under an `## [Unreleased]` section describing the
change. Entries are mandatory for every PR.
4. Make sure `pester` and `code-quality` CI jobs are green.
5. Open the PR against `main` using the
[PR template](./PULL_REQUEST_TEMPLATE.md). Link the issue it resolves
(`Fixes #123`).
6. A maintainer will review. Address feedback by pushing additional commits to
the same branch (no force-push during review, please).

## Coding guidelines

- Target **PowerShell 7.0+** (`pwsh`). The Copy phase uses
`ForEach-Object -Parallel`, which is not available on Windows
PowerShell 5.1.
- Every public function uses `[CmdletBinding()]`, comment-based help, and
parameter validation (`[ValidateNotNullOrEmpty()]`, `[ValidateSet()]`, etc.).
- Destructive operations (`BACKUP`, `RESTORE`, file deletes) must support
`-WhatIf` / `-Confirm` via `SupportsShouldProcess`.
- Never log credentials, connection strings containing passwords, or full file
paths that include secrets.
- Use approved PowerShell verbs (`Get-Verb`). Run PSScriptAnalyzer locally
before pushing.

## Releasing (maintainers)

1. Move the `## [Unreleased]` block in `CHANGELOG.md` to a new
`## [x.y.z] - YYYY-MM-DD` section.
2. Mirror the same block at the top of `RELEASE-NOTES.md`.
3. Commit and tag: `git tag vX.Y.Z && git push --tags`.
4. The `release.yml` workflow creates the GitHub Release and attaches the
packaged zip.
62 changes: 62 additions & 0 deletions .github/ISSUE_TEMPLATE/1_bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: Bug Report
description: File a bug report.
title: "[Bug]: "
labels: ["bug", "triage"]
projects: ["luigilink/SPSDBMove"]
assignees:
- luigilink
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this bug report!
- type: input
id: contact
attributes:
label: Contact Details (Optional)
description: How can we get in touch with you if we need more info?
placeholder: ex. email@example.com
validations:
required: false
- type: textarea
id: what-happened
attributes:
label: What happened?
description: Also tell us, what did you expect to happen?
placeholder: Tell us what you see!
value: "A bug happened!"
validations:
required: true
- type: dropdown
id: version
attributes:
label: Version
description: What version of our software are you running?
options:
- 1.0.x
- Other
default: 0
validations:
required: true
- type: dropdown
id: browsers
attributes:
label: What version of PowerShell are you running?
multiple: true
options:
- 5.x
- 7.x
- type: textarea
id: logs
attributes:
label: Relevant log output
description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
render: shell
- type: checkboxes
id: terms
attributes:
label: Code of Conduct
description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/luigilink/SPSDBMove/blob/main/CODE_OF_CONDUCT.md).
options:
- label: I agree to follow this project's Code of Conduct
required: true
55 changes: 55 additions & 0 deletions .github/ISSUE_TEMPLATE/2_feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: Feature Request
description: Suggest a new feature or improvement.
title: "[Feature Request]: "
labels: ["enhancement", "triage"]
projects: ["luigilink/SPSDBMove"]
assignees:
- luigilink
body:
- type: markdown
attributes:
value: |
Thanks for suggesting a feature or improvement! Please provide as much detail as possible.
- type: input
id: contact
attributes:
label: Contact Details (Optional)
description: How can we get in touch with you if we need more info?
placeholder: ex. email@example.com
validations:
required: false
- type: textarea
id: feature-description
attributes:
label: Describe the feature you'd like to see
description: What do you want to achieve? What problem does it solve?
placeholder: Describe the feature or improvement you're suggesting.
validations:
required: true
- type: textarea
id: potential-solutions
attributes:
label: Potential solutions or alternatives
description: If you have any ideas on how to implement this feature, feel free to share!
placeholder: Suggest how this could be implemented or any alternative ideas.
validations:
required: false
- type: dropdown
id: priority
attributes:
label: Priority
description: How important is this feature to you?
options:
- Low
- Medium
- High
validations:
required: true
- type: checkboxes
id: terms
attributes:
label: Code of Conduct
description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/luigilink/SPSDBMove/blob/main/CODE_OF_CONDUCT.md).
options:
- label: I agree to follow this project's Code of Conduct
required: true
39 changes: 39 additions & 0 deletions .github/ISSUE_TEMPLATE/3_documentation_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: Documentation Request
description: Suggest improvements or request missing documentation.
title: "[Documentation]: "
labels: ["documentation", "triage"]
projects: ["luigilink/SPSDBMove"]
assignees:
- luigilink
body:
- type: markdown
attributes:
value: |
Thank you for suggesting improvements to the documentation. Please be as detailed as possible.

- type: textarea
id: doc-area
attributes:
label: Area of Documentation
description: Which part of the documentation needs to be improved or added?
placeholder: e.g., API usage, installation guide, etc.
validations:
required: true

- type: textarea
id: details
attributes:
label: Details
description: Describe the improvements or missing information.
placeholder: Describe the changes you'd like to see.
validations:
required: true

- type: checkboxes
id: terms
attributes:
label: Code of Conduct
description: By submitting this request, you agree to follow our [Code of Conduct](https://github.com/luigilink/SPSDBMove/blob/main/CODE_OF_CONDUCT.md).
options:
- label: I agree to follow this project's Code of Conduct
required: true
39 changes: 39 additions & 0 deletions .github/ISSUE_TEMPLATE/4_improvement_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: Refactor/Improvement Request
description: Request improvements or code refactoring.
title: "[Improvement]: "
labels: ["enhancement", "refactor", "triage"]
projects: ["luigilink/SPSDBMove"]
assignees:
- luigilink
body:
- type: markdown
attributes:
value: |
Thanks for suggesting a refactor or improvement to the codebase. Please provide details below.

- type: textarea
id: improvement-description
attributes:
label: What improvement would you like to see?
description: Describe the refactor, optimization, or code improvement.
placeholder: Explain the change you are suggesting.
validations:
required: true

- type: textarea
id: reasons
attributes:
label: Why is this improvement needed?
description: Describe the benefits of this improvement.
placeholder: Why does this matter? Will it improve performance, readability, etc.?
validations:
required: true

- type: checkboxes
id: terms
attributes:
label: Code of Conduct
description: By submitting this request, you agree to follow our [Code of Conduct](https://github.com/luigilink/SPSDBMove/blob/main/CODE_OF_CONDUCT.md).
options:
- label: I agree to follow this project's Code of Conduct
required: true
5 changes: 5 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: "SPSDBMove Discussions"
url: https://github.com/luigilink/SPSDBMove/discussions
about: "To engage with the community and maintainers of SPSDBMove, please visit the discussions group. There, you can share feedback, ask questions, and collaborate with others working on SPSDBMove."
51 changes: 51 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
<!--
Thanks for submitting a Pull Request (PR) to this project.
Your contribution to this project is greatly appreciated!

Please prefix the PR title with the resource name,
e.g. 'ResourceName: My short description'.
If this is a breaking change, then also prefix the PR title
with 'BREAKING CHANGE:',
e.g. 'BREAKING CHANGE: ResourceName: My short description'.

You may remove this comment block, and the other comment blocks, but please
keep the headers and the task list.
-->

#### Pull Request (PR) description

<!--
Replace this comment block with a description of your PR.
Also, make sure you have updated the CHANGELOG.md, see the
task list below. An entry in the CHANGELOG.md is mandatory
for all PRs.
-->

#### This Pull Request (PR) fixes the following issues

<!--
If this PR does not fix an open issue, replace this comment block with None.
If this PR resolves one or more open issues, replace this comment block with
a list of the issues using a GitHub closing keyword, e.g.:

- Fixes #123
- Fixes #124
-->

#### Task list

<!--
To aid community reviewers in reviewing and merging your PR, please take
the time to run through the below checklist and make sure your PR has
everything updated as required.

Change to [x] for each task in the task list that applies to your PR.
For those task that don't apply to you PR, leave those unchecked.
-->

- [ ] Added an entry to the change log under the Unreleased section of the
file CHANGELOG.md. Entry should say what was changed and how that
affects users (if applicable), and reference the issue being resolved
(if applicable).
- [ ] Added/updated documentation and descriptions where appropriate?
- [ ] New/changed code adheres to [Style Guidelines]?
Loading
Loading