Skip to content

Instantly share code, notes, and snippets.

@JamesSkemp
Created February 10, 2015 21:43
Show Gist options
  • Save JamesSkemp/3806b25743850f977d7e to your computer and use it in GitHub Desktop.
Save JamesSkemp/3806b25743850f977d7e to your computer and use it in GitHub Desktop.
Delete old item versions in Sitecore
using Sitecore.Data;
using System;
using System.Linq;
namespace JamesRSkemp.Apps.OneOffs
{
public partial class DeleteExtraVersions : System.Web.UI.Page
{
private Database db = Database.GetDatabase("master");
protected void Page_Load(object sender, EventArgs e)
{
var itemId = new Sitecore.Data.ID("{8C4CCA29-6750-4DCF-A3F9-970CC5896427}");
var versionsToKeep = 20;
var item = db.GetItem(itemId);
if (item == null)
{
form1.InnerHtml = "Item cannot be found.";
}
else
{
var itemVersions = item.Versions.GetVersions();
form1.InnerHtml = string.Format("Total versions: {0}<br />", item.Versions.GetVersionNumbers().Length);
form1.InnerHtml += string.Format("Item name: {0}<br />", item.Name);
if (itemVersions.Length <= versionsToKeep)
{
form1.InnerHtml += "There are too few versions.<br />";
return;
}
itemVersions = itemVersions
.OrderByDescending(i => i.Version.Number)
.Skip(versionsToKeep)
// Now work with the oldest first.
.Reverse()
// Take a small number to be safe.
.Take(10)
.ToArray();
item.Editing.BeginEdit();
foreach (var itemVersion in itemVersions)
{
form1.InnerHtml += string.Format("{0} = {1}<br />", itemVersion.Version.Number, itemVersion.Statistics.Updated);
itemVersion.RecycleVersion();
}
item.Editing.EndEdit();
}
}
}
}
@JamesSkemp
Copy link
Author

The main page can just be the default page that's created; it just needs an element to dump output into.

You must log in as an admin to run this page.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment