|
|
<div class="panel panel-default">
|
|
|
<div class="panel-heading">
|
|
|
<h3 class="panel-title">${_('Strip commits from repository')}</h3>
|
|
|
</div>
|
|
|
<div class="panel-body">
|
|
|
%if c.rhodecode_db_repo.repo_type != 'svn':
|
|
|
<h4>${_('Please provide up to %d commits commits to strip') % c.strip_limit}</h4>
|
|
|
<p>
|
|
|
${_('In the first step commits will be verified for existance in the repository')}. </br>
|
|
|
${_('In the second step, correct commits will be available for stripping')}.
|
|
|
</p>
|
|
|
${h.secure_form(h.route_path('strip_check', repo_name=c.rhodecode_db_repo.repo_name), method='POST', request=request)}
|
|
|
<div id="change_body" class="field">
|
|
|
<div id="box-1" class="inputx locked_input">
|
|
|
<input class="text" id="changeset_id-1" name="changeset_id-1" size="59"
|
|
|
placeholder="${_('Enter full 40 character commit sha')}" type="text" value="">
|
|
|
<div id="plus_icon-1" class="btn btn-default plus_input_button" onclick="addNew(1);return false">
|
|
|
<i class="icon-plus">${_('Add another commit')}</i>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div id="results" style="display:none; padding: 10px 0px;"></div>
|
|
|
|
|
|
<div class="buttons">
|
|
|
<button id="strip_action" class="btn btn-small btn-primary" onclick="checkCommits();return false">
|
|
|
${_('Check commits')}
|
|
|
</button>
|
|
|
</div>
|
|
|
|
|
|
${h.end_form()}
|
|
|
%else:
|
|
|
<h4>${_('Sorry this functionality is not available for SVN repository')}</h4>
|
|
|
%endif
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
|
|
|
<script>
|
|
|
var plus_leaf = 1;
|
|
|
|
|
|
addNew = function(number){
|
|
|
if (number >= ${c.strip_limit}){
|
|
|
return;
|
|
|
}
|
|
|
var minus = '<i class="icon-minus">${_('Remove')}</i>';
|
|
|
$('#plus_icon-'+number).detach();
|
|
|
number++;
|
|
|
|
|
|
var input = '<div id="box-'+number+'" class="inputx locked_input">'+
|
|
|
'<input class="text" id="changeset_id-'+number+'" name="changeset_id-'+number+'" size="59" type="text" value=""' +
|
|
|
'placeholder="${_('Enter full 40 character commit sha')}">'+
|
|
|
'<div id="plus_icon-'+number+'" class="btn btn-default plus_input_button" onclick="addNew('+number+');return false">'+
|
|
|
'<i class="icon-plus">${_('Add another commit')}</i>'+
|
|
|
'</div>'+
|
|
|
'<div id="minus_icon-'+number+'" class="btn btn-default minus_input_button" onclick="delOld('+(number)+');return false">'+
|
|
|
minus +
|
|
|
'</div>' +
|
|
|
'</div>';
|
|
|
$('#change_body').append(input);
|
|
|
plus_leaf++;
|
|
|
};
|
|
|
|
|
|
reIndex = function(number){
|
|
|
for(var i=number;i<=plus_leaf;i++){
|
|
|
var check = $('#box-'+i);
|
|
|
if (check.length == 0){
|
|
|
var change = $('#box-'+(i+1));
|
|
|
change.attr('id','box-'+i);
|
|
|
var plus = $('#plus_icon-'+(i+1));
|
|
|
|
|
|
if (plus.length != 0){
|
|
|
plus.attr('id','plus_icon-'+i);
|
|
|
plus.attr('onclick','addNew('+i+');return false');
|
|
|
plus_leaf--;
|
|
|
}
|
|
|
var minus = $('#minus_icon-'+(i+1));
|
|
|
|
|
|
minus.attr('id','minus_icon-'+i);
|
|
|
|
|
|
minus.attr('onclick','delOld('+i+');re' +
|
|
|
'turn false');
|
|
|
var input = $('input#changeset_id-'+(i+1));
|
|
|
input.attr('name','changeset_id-'+i);
|
|
|
input.attr('id','changeset_id-'+i);
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
|
|
|
delOld = function(number){
|
|
|
$('#box-'+number).remove();
|
|
|
number = number - 1;
|
|
|
var box = $('#box-'+number);
|
|
|
var plus = '<div id="plus_icon-'+number+'" class="btn btn-default plus_input_button" onclick="addNew('+number +');return false">'+
|
|
|
'<i id="i_plus_icon-'+number+'" class="icon-plus">${_('Add another commit')}</i></div>';
|
|
|
var minus = $('#minus_icon-'+number);
|
|
|
if(number +1 == plus_leaf){
|
|
|
minus.detach();
|
|
|
box.append(plus);
|
|
|
box.append(minus);
|
|
|
plus_leaf --;
|
|
|
}
|
|
|
reIndex(number+1);
|
|
|
|
|
|
};
|
|
|
|
|
|
var resultData = {
|
|
|
'csrf_token': CSRF_TOKEN
|
|
|
};
|
|
|
|
|
|
checkCommits = function() {
|
|
|
var postData = $('form').serialize();
|
|
|
$('#results').show();
|
|
|
$('#results').html('<h4>${_('Checking commits')}...</h4>');
|
|
|
var url = "${h.route_path('strip_check', repo_name=c.rhodecode_db_repo.repo_name)}";
|
|
|
var btn = $('#strip_action');
|
|
|
btn.attr('disabled', 'disabled');
|
|
|
btn.addClass('disabled');
|
|
|
|
|
|
var success = function (data) {
|
|
|
resultData = {
|
|
|
'csrf_token': CSRF_TOKEN
|
|
|
};
|
|
|
var i = 0;
|
|
|
var result = '<ol>';
|
|
|
$.each(data, function(index, value){
|
|
|
i= index;
|
|
|
var box = $('#box-'+index);
|
|
|
if (value.rev){
|
|
|
resultData[index] = JSON.stringify(value);
|
|
|
|
|
|
var verifiedHtml = (
|
|
|
'<li style="line-height:1.2em">' +
|
|
|
'<code>{0}</code>' +
|
|
|
'{1}' +
|
|
|
'<div style="white-space:pre">' +
|
|
|
'author: {2}\n' +
|
|
|
'description: {3}' +
|
|
|
'</div>' +
|
|
|
'</li>').format(
|
|
|
value.rev,
|
|
|
"${_(' commit verified positive')}",
|
|
|
value.author, value.comment
|
|
|
);
|
|
|
result += verifiedHtml;
|
|
|
}
|
|
|
else {
|
|
|
var verifiedHtml = (
|
|
|
'<li style="line-height:1.2em">' +
|
|
|
'<code><strike>{0}</strike></code>' +
|
|
|
'{1}' +
|
|
|
'</li>').format(
|
|
|
value.commit,
|
|
|
"${_(' commit verified negative')}"
|
|
|
);
|
|
|
result += verifiedHtml;
|
|
|
}
|
|
|
box.remove();
|
|
|
});
|
|
|
result += '</ol>';
|
|
|
var box = $('#box-'+(parseInt(i)+1));
|
|
|
box.remove();
|
|
|
$('#results').html(result);
|
|
|
};
|
|
|
|
|
|
btn.html('Strip');
|
|
|
btn.removeAttr('disabled');
|
|
|
btn.removeClass('disabled');
|
|
|
btn.attr('onclick','strip();return false;');
|
|
|
ajaxPOST(url, postData, success, null);
|
|
|
};
|
|
|
|
|
|
strip = function() {
|
|
|
var url = "${h.route_path('strip_execute', repo_name=c.rhodecode_db_repo.repo_name)}";
|
|
|
var success = function(data) {
|
|
|
var result = '<h4>Strip executed</h4><ol>';
|
|
|
$.each(data, function(index, value){
|
|
|
if(data[index]) {
|
|
|
result += '<li><code>' +index+ '</code> ${_(' commit striped successfully')}' + '</li>';
|
|
|
}
|
|
|
else {
|
|
|
result += '<li><code>' +index+ '</code> ${_(' commit strip failed')}' + '</li>';
|
|
|
}
|
|
|
});
|
|
|
if ($.isEmptyObject(data)) {
|
|
|
result += '<li>Nothing done...</li>'
|
|
|
}
|
|
|
result += '</ol>';
|
|
|
$('#results').html(result);
|
|
|
|
|
|
};
|
|
|
ajaxPOST(url, resultData, success, null);
|
|
|
var btn = $('#strip_action');
|
|
|
btn.remove();
|
|
|
|
|
|
};
|
|
|
</script>
|
|
|
|