Depending on the type of your version control system, conflicts arise in different situations.
Non-Distributed Version Control Systems
Working in a team, you might come across a situation, when somebody commits changes to a file you are
currently working on.
Conflicts can also arise on merging branches, applying patches or unshelving changes.
If the changes are not overlapping, the files are merged automatically, but when there
are changes to the same lines, you will need to resolve such conflict yourself.
When you try to edit a file that has a newer version on the server, RubyMine informs you about
that, showing a message pop-up window in the editor:

In this case you should update your local version prior to changing the file, or merge changes.
If you try to commit a file that has a newer repository version, an error is reported in the Messages tool window:

Depending on the behavior chosen from the
Create changelist on failed commit drop-down list in the
Confirmation page
of the
Settings dialog box, RubyMine does one of the following:
-
Creates a Failed Commit changelist, moves the conflicting files to it automatically, and highlights the names of the files red.
This behavior takes place if the Yes option is chosen.

-
Leaves the conflicting files in the changelist where they were but highlights them red.
This behavior takes place if the No option is chosen.
-
Displays a dialog box, where you can choose to move the conflicting files to a new changelist or leave them in the original one. In either case, the conflicting files will be highlighted red.
This behavior takes place if the Ask option is chosen in the Confirmation page.
If you synchronize a file, that already has local changes, with a newer repository version, committed by
somebody else, a conflict occurs.
The conflicting file gets status Merged with conflicts.
The file remains in the same changelist in the Local tab of the Changes tool window but its name is highlighted red.
If the file is currently opened in the editor, the file name on the tab header is also highlighted red.
Distributed Version Control Systems
Under Git, conflicts arise during merge
,
rebase
,
cherry-pick
,
unstash
,
or apply patch
.
Conflict Resolution Tool
RubyMine suggests a tool for resolving conflicts locally. This tool consists of three
panes. The left pane shows the read-only local copy; the right pane shows the read-only version checked
in to the repository. The central pane shows a fully-functional editor with the results of merging and conflict
resolving. Initially, the contents of this pane is the same as the base revision of the file, that is,
the revision from which both conflicting versions derived.
