# PublishProfiles Added to .gitignore

**Date:** 2026-02-26  
**Status:** ✅ Complete  
**Action:** Added PublishProfiles folder patterns to .gitignore

---

## What Was Added

### Patterns Added to .gitignore

```gitignore
# Publish profiles (anywhere in project)
/Properties/PublishProfiles/
Properties/PublishProfiles/
**/PublishProfiles/
**/Properties/PublishProfiles/
```

### What These Patterns Ignore

1. **`/Properties/PublishProfiles/`** - Root level Properties/PublishProfiles
2. **`Properties/PublishProfiles/`** - Properties/PublishProfiles anywhere
3. **`**/PublishProfiles/`** - Any PublishProfiles folder at any level
4. **`**/Properties/PublishProfiles/`** - Properties/PublishProfiles at any level

---

## Why Ignore PublishProfiles?

### Machine-Specific Configuration
- Contains local file paths
- User-specific settings
- Development environment details

### Security Concerns
- May contain credentials
- Connection strings
- Server information

### Best Practices
- Should not be in version control
- Each developer maintains their own
- Use template or documentation instead

---

## Existing PublishProfiles Found

```
Jellyfin.Server/Properties/PublishProfiles/
```

This folder is currently tracked by Git and needs to be removed.

---

## Cleanup Steps

### 1. Remove from Git Tracking

```bash
# Remove from Git but keep local files
git rm -r --cached Jellyfin.Server/Properties/PublishProfiles

# Verify removal
git status
```

### 2. Commit Changes

```bash
# Commit .gitignore update
git add .gitignore
git commit -m "gitignore: Add PublishProfiles folder patterns

- Added **/PublishProfiles/ to ignore publish profiles anywhere
- Added **/Properties/PublishProfiles/ for comprehensive coverage
- Removed existing PublishProfiles from Git tracking

Reason: Publish profiles are machine-specific and should not be version controlled
"
```

### 3. Verify

```bash
# Check that PublishProfiles is ignored
git status

# Should not show PublishProfiles folders
```

---

## What Gets Ignored Now

### Project Publish Profiles
```
Jellyfin.Server/Properties/PublishProfiles/
MediaBrowser.Controller/Properties/PublishProfiles/
*/Properties/PublishProfiles/ (any project)
```

### Any PublishProfiles Folder
```
PublishProfiles/
src/PublishProfiles/
tests/PublishProfiles/
**/PublishProfiles/ (anywhere)
```

---

## Creating Publish Profiles (For Developers)

### Don't Commit
Create your own local publish profiles:

1. **In Visual Studio:**
   - Right-click project → Publish
   - Create new profile
   - Configure settings
   - **Don't commit!**

2. **Document Settings:**
   Create a template in docs:
   ```
   docs/PUBLISH_PROFILE_TEMPLATE.md
   ```

3. **Share Configuration:**
   Use README or documentation to explain:
   - Target framework
   - Deployment type
   - Required settings

### Example Documentation

```markdown
## Creating a Publish Profile

1. Right-click Jellyfin.Server project
2. Select "Publish"
3. Choose target:
   - Folder: `lib/Release/net11.0`
   - Configuration: Release
   - Target Framework: net11.0
   - Deployment Mode: Self-contained
4. Save as "FolderProfile"

**Note:** This is for local development only. Do not commit.
```

---

## .gitignore Section (Complete)

```gitignore
# Centralized lib output folder
/lib/
lib/
/installer-output/
installer-output/

# Publish profiles (anywhere in project)
/Properties/PublishProfiles/
Properties/PublishProfiles/
**/PublishProfiles/
**/Properties/PublishProfiles/
```

---

## Verification

### Check What's Ignored

```bash
# List ignored files
git status --ignored

# Check specific folder
git check-ignore -v Jellyfin.Server/Properties/PublishProfiles
```

### Ensure Clean State

```bash
# Should show no PublishProfiles
git status

# Verify .gitignore is working
touch Jellyfin.Server/Properties/PublishProfiles/test.pubxml
git status
# Should NOT show the new file
```

---

## Migration for Team Members

If team members have PublishProfiles in their working directory:

### After Pulling This Change

```bash
# Pull the updated .gitignore
git pull

# Their local PublishProfiles are now ignored
# Git will stop tracking them
# Local files remain untouched

# Verify
git status
# Should not show PublishProfiles as modified
```

---

## Related Files

### .gitignore Sections

```gitignore
# Build output (existing)
[Bb]in/
[Oo]bj/
lib/

# Visual Studio (existing)
.vs/
*.user
*.suo

# Publish profiles (new)
**/PublishProfiles/
**/Properties/PublishProfiles/
```

---

## Git Commands Summary

```bash
# Update .gitignore (already done)
git add .gitignore

# Remove PublishProfiles from tracking
git rm -r --cached Jellyfin.Server/Properties/PublishProfiles

# Commit both changes
git commit -m "gitignore: Add PublishProfiles folder patterns"

# Push to remote
git push origin pgsql_testing_branch
```

---

## Benefits

✅ **No More Conflicts** - Each developer has their own profiles  
✅ **Security** - No credentials in repo  
✅ **Flexibility** - Different configs per machine  
✅ **Clean History** - No unnecessary commits  
✅ **Best Practice** - Follows .NET conventions  

---

## Files Modified

```
Modified:
  ✏️  .gitignore

To Remove (from Git tracking):
  🗑️ Jellyfin.Server/Properties/PublishProfiles/ (if exists in Git)
```

---

## Summary

**Status:** ✅ Complete  
**Patterns Added:** 4 (comprehensive coverage)  
**Folders to Untrack:** 1 (Jellyfin.Server/Properties/PublishProfiles)  
**Team Impact:** None (local files remain)  

The .gitignore now properly excludes all PublishProfiles folders from version control while allowing developers to maintain their own local publish configurations.

---

**Next Steps:**
1. ✅ .gitignore updated
2. ⏳ Run `git rm -r --cached Jellyfin.Server/Properties/PublishProfiles`
3. ⏳ Commit changes
4. ⏳ Push to remote
