В Вашей ситуации я думаю, что Ваш партнер корректен. То, что хорошо о перебазировании, - то, что постороннему, на которого похожи Ваши изменения, они все произошли в чистой последовательности все собой. Это означает
, можно все еще продолжить продвигать частное ответвление разработки в удаленный репозиторий ради резервного копирования, но другие не должны рассматривать это как "общедоступное" ответвление, так как Вы будете повторно базироваться. BTW, легкая команда для того, чтобы сделать это git push --mirror origin
.
программное обеспечение Packaging статьи с помощью Мерзавца делает довольно хорошее задание, объясняя торговлю offs в слиянии по сравнению с перебазированием. Это - немного различного контекста, но принципалы являются тем же - это в основном сводится, являются ли Ваши ответвления общедоступными или частными и как Вы планируете интегрировать их в магистраль.
Я ценю оба предыдущих ответа, и они были полезны, но не совсем то, что я искал. После рассмотрения ответов и дополнительных исследований я публикую свое решение, чтобы, возможно, оно могло помочь кому-то другому.
Код кнопки:
<asp:Button ID="btnSave" OnClick="btnSaveClick" runat="server" Text="Save" OnClientClick="return CheckForVersion()" />
Javascript:
<script language="javascript">
function CheckForVersion() {
PageMethods.CheckForVersion(aspnetForm.ctl00$ContentPlaceHolder1$ddlPageName2.value, aspnetForm.ctl00$ContentPlaceHolder1$txtContentName2.value, OnSucceeded, OnFailed);
return false;
}
function OnSucceeded(results) {
if(results) {
//version exists so prompt user
if(confirm("Version already exists. Do you want to overwrite?")) {
__doPostBack('ctl00$ContentPlaceHolder1$btnSave','');
}
}
else
{
//version does not exist so save it without prompting user
__doPostBack('ctl00$ContentPlaceHolder1$btnSave','');
}
}
function OnFailed(error) {
// handle pagemethod error
alert(error.get_message());
}
</script>
C # с использованием Subsonic 2.1:
[WebMethod]
public static bool CheckForVersion(string pageName, string versionName)
{
PageContentCollection pages = new PageContentCollection().Where("pageName", pageName).Where("versionName", versionName).Load();
if (pages.Count > 0)
return true;
else
return false;
}
<asp:Button OnClientClick="return confirm('Are you sure you want to go?');"
Text="Confirm" runat="server" onclick="Unnamed1_Click" />
Если они нажмут ОК, произойдет событие onclick сервера, если они нажмут «Отмена», будет похоже, что они даже не нажимали кнопку, конечно, вы всегда можете добавить функциональность к отменить часть.
Может быть, что-то вроде:
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
<script type="text/javascript">
function CompareConfirm()
{
var str1 = "abc";
var str2 = "def";
if (str1 === str2) {
// your logic here
return false;
} else {
// your logic here
return confirm("Confirm?");
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button OnClientClick="return CompareConfirm();"
Text="Confirm" runat="server" onclick="Unnamed1_Click" />
</div>
</form>
</body>
</html>
Альтернативный, более простой подход, не требующий AJAX, - разрешить обратную передачу как обычно, а затем в коде программной части выполнить свои проверки.
Если требуется подтверждение пользователя, просто верните пользователя обратно на ту же страницу, но сделайте дополнительную панель видимой и скройте исходную кнопку «Сохранить».
На этой дополнительной панели отобразите ваше сообщение с другим OK / Cancel кнопка. Когда пользователь нажимает эту кнопку OK, выполняется сохранение!
Поставьте галочку перед рендерингом страницы клиенту. Затем прикрепите обработчик (на стороне клиента, например, javascript) к кнопке сохранения или форме, которая отображает окно подтверждения (но только если сохранение приводит к замене).