Git Integration Requirements
This chapter briefly summarizes the known set of both general and specific requirements on VCS support in the NetBenas IDE that are fundamental for analyzing the current state and proposing future improvements.
General requirements
The most general requirement on VCS integration could be stated as: provide IDE support for effective work on shared sources in a team of developers that uses version control systems. "Sources" are understood as any data put under version control, like project files, source files, resources, etc, used in the IDE during the development. It also can be called "project data".
By using further decomposition based on typical user's goals, tasks and use cases, this primary requirement could be split into the following more detailed list:
Set-up versioning environment
- specify user name, user email, origin repository location, etc.
Get versioned sources
- get selected sources from a remote repository or take over an existing local repository
Put sources under version control
- make selected local sources versioned in a new git repository
Create versioned sources
- create new sources as versioned from the beginning
Synchronize a working tree with repository
- apply/revert local changes (content changes, creation, removal, moves)
- prevent user errors and data losses
Synchronize a local with a remote repository
- accept changes from a remote repository
- update a remote repository
- merge local and remote changes, resolve conflicts
- prevent user errors and data losses
Fork development to branches
- support tagging, branching, merge branches, etc.
Provide version control information for files
- present clearly what data is under version control, what is the revision and status, allow inspection of diffs, history, etc.
Support versioning of logical units (e.g. projects) in a single step
- allow to version-control all related data as a single unit, as well as separately
Integration with IDE concepts
- Projects
- Filesystems
- Refactoring
- Editor
Git Related Requirements
Transfer Protocols
If possible all common access methods should be supported, Including proxy access.
GIT URLS
One of the following notations can be used to name the remote repository:
- rsync://host.xz/path/to/repo.git/
- http://host.xz/path/to/repo.git/
- https://host.xz/path/to/repo.git/
- git://host.xz/path/to/repo.git/
- git://host.xz/~user/path/to/repo.git/
- ssh://[user@]host.xz[:port]/path/to/repo.git/
- ssh://[user@]host.xz/path/to/repo.git/
- ssh://[user@]host.xz/~user/path/to/repo.git/
- ssh://[user@]host.xz/~/path/to/repo.git
- [user@]host.xz:/path/to/repo.git/
- [user@]host.xz:~user/path/to/repo.git/
- [user@]host.xz:path/to/repo.git
- /path/to/repo.git/
- file:///path/to/repo.git/
