GitLab development guides
Get started!
- Setup GitLab's development environment with GitLab Development Kit (GDK)
- GitLab contributing guide
- Architecture of GitLab
- Rake tasks for development
Processes
- GitLab core team & GitLab Inc. contribution process
- Generate a changelog entry with
bin/changelog
- Code review guidelines for reviewing code and having code reviewed.
- Automatic CE->EE merge
- Guidelines for implementing Enterprise Edition features
UX and frontend guides
- UX guide for building GitLab with existing CSS styles and elements
- Frontend guidelines
- Emoji guide
Backend guides
- GitLab utilities
- API styleguide Use this styleguide if you are contributing to the API.
- Sidekiq guidelines for working with Sidekiq workers
- Working with Gitaly
- Manage feature flags
- Licensed feature availability
- View sent emails or preview mailers
- Shell commands in the GitLab codebase
Gemfile
guidelines- Sidekiq debugging
- Gotchas to avoid
- Avoid modules with instance variables if possible
- Issue and merge requests state models
- How to dump production data to staging
- Working with the GitHub importer
Performance guides
- Instrumentation
- Performance guidelines
- Merge request performance guidelines for ensuring merge requests do not negatively impact GitLab performance
Databases guides
Migrations
- What requires downtime?
- SQL guidelines for working with SQL queries
- Migrations style guide for creating safe SQL migrations
- Post deployment migrations
- Background migrations
- Swapping tables
Best practices
- Merge Request checklist
- Adding database indexes
- Foreign keys & associations
- Single table inheritance
- Polymorphic associations
- Serializing data
- Hash indexes
- Storing SHA1 hashes as binary
- Iterating tables in batches
- Ordering table columns
- Verifying database capabilities
- Database Debugging and Troubleshooting
- Query Count Limits
Testing guides
Documentation guides
Internationalization (i18n) guides
Build guides
Compliance
- Licensing for ensuring license compliance