Sitecore users edit item creates new version

sitecore

Solution

Here is the code responsible for creating new versions while editing Sitecore items:

public Item StartEditing(Item item)
{
  Error.AssertObject((object) item, "item");
  if (!Settings.RequireLockBeforeEditing || Context.User.IsAdministrator)
    return item;
  if (this._context.IsAdministrator || StandardValuesManager.IsStandardValuesHolder(item) || !this.HasWorkflow(item) && !this.HasDefaultWorkflow(item) || !this.IsApproved(item))
    return this.Lock(item);
  Item obj = item.Versions.AddVersion();
  if (obj != null)
    return this.Lock(obj);
  else
    return (Item) null;
}

Apparently Sitecore creates new version if item is in a final state of any workflow unless user is administrator.

You could try to change the `RequireLockBeforeEditing` setting but it will disable not only new version functionality but the locking functionality as well.

Problem

In Sitecore, for all the users who do not have administrator privileges(Is administrator checkbox not clicked when creating the user) when they try to edit an item they have to select "Lock and Edit" option which would create a new version instead of editing the existing one. Is there a way I can make non admin users edit an item without creating a new version ? I am hoping whether this could be done using a user role.

Original source