Это супер-пупер kludgy, но каким-то классным способом, поэтому я просто брошу его в кольцо:
GIT_EDITOR='f() { if [ "$(basename $1)" = "git-rebase-todo" ]; then sed -i "2,\$s/pick/squash/" $1; else vim $1; fi }; f' git rebase -i foo~5 foo
Перевод: предоставить новый «редактор» для git, который , если редактируемое имя файла git-rebase-todo
(приглашение интерактивной переадресации) изменяет все, кроме первого «выбрать» на «сквош», а в противном случае порождает vim, так что когда вам будет предложено отредактировать сжатое сообщение фиксации, вы получить vim. (И, очевидно, я раздавил последние пять коммитов на ветке foo, но вы можете изменить это, как вам нравится.)
Я, вероятно, сделаю то, что предложил Марк Лонгэй .
Если у вас нет контроля над фрейм-сайтом, вы не можете обойти междоменную политику.
Если у вас есть контроль над обоими сайтами, вы можете использовать postMessage
для передачи данных в разных доменах. Очень простой пример:
// framed.htm:
window.onmessage = function(event) {
event.source.postMessage(document.body.innerHTML, event.origin);
};
// Main page:
window.onmessage = function(event) {
alert(event.data);
};
// Trigger:
// <iframe id="myframe" src="framed.htm"></iframe>
document.getElementById('myframe').contentWindow.postMessage('','*');
В событии Internet Explorer 8, переданном как параметр, может быть null, поэтому вам нужно получить доступ к событию другим способом:
В файле frame.html:
window.onmessage = function(event) {
var evt = evt || window.event;
evt.source.postMessage('Message from iFrame', evt.origin);
};
На main.html:
window.onmessage = function(event) {
var evt = evt || window.event;
alert(evt.data);
};
Событие запускается так же, как и Rob W:
document.getElementById('frameId').contentWindow.postMessage('message','*');