我一直在閱讀和尋找解決方案几天,但沒有找到任何適合我的需求。使用SVN(或git)自動提交文件修改?
我們經常更新由設計師和開發人員更新的網站,大多數時候他們不會對SVN進行更改。
我在尋找持續集成類型的解決方案,其中當登臺服務器上的「版本化」文件得到更新時,它會自動提交給SVN。
我看過的CruiseControl和其他工具不這樣做;有沒有一種工具可以實現這個或者我們可以使用的更好的過程?
感謝您的幫助!
Chris
我一直在閱讀和尋找解決方案几天,但沒有找到任何適合我的需求。使用SVN(或git)自動提交文件修改?
我們經常更新由設計師和開發人員更新的網站,大多數時候他們不會對SVN進行更改。
我在尋找持續集成類型的解決方案,其中當登臺服務器上的「版本化」文件得到更新時,它會自動提交給SVN。
我看過的CruiseControl和其他工具不這樣做;有沒有一種工具可以實現這個或者我們可以使用的更好的過程?
感謝您的幫助!
Chris
我真的很喜歡你說「更好的過程」,因爲答案是肯定的。
讓你的設計師和每個人都從回購工作。如果你選擇SVN或者git或者別的什麼都沒關係,但是要做到「權威」的副本。這樣做最終會讓你頭痛,因爲你可以清楚地記錄所有的變化,並且可以隨時恢復。
我已經安裝了網頁設計商店只有環境是一個系統,相反你提出什麼樣的方式,它的工作原理是這樣的:
我希望這可以幫助你考慮一下你的過程。如果你真的不想改變你的過程,你可以設置一個cron,每隔幾分鐘運行一次,並添加/提交所有已更改的文件,並且應該可以工作。但我不喜歡這樣,因爲現在你沒有有意義的提交信息,而且改變歷史也可能沒有意義。當人們在工作並保存文件時,他們沒有意識到他們正在提交什麼內容,因此很可能現在版本庫中的修訂版本已經處於崩潰狀態,現在如何找到未被破壞的修訂版本?選擇「自動化」提交顯然不是最乾淨的解決方案。
是的,這似乎是最好的選擇。這就是我在另一家公司所做的事情,但後來我被貶爲了=)希望設計師能夠確信遵循這一點,將佈局好處。謝謝@ctcherry! – 2011-04-29 05:24:00
我相信(雖然我沒有嘗試過),你可以爲看門狗(http://packages.python.org/watchdog/)寫一個觀察者,它會爲你做提交。
但是,我同意ctcherry,你將得到很多保存在一個破碎的狀態。你真的需要改變你的過程。
是的,我想我會推動描述的過程ctcherry。 – 2011-04-29 05:20:36
CruiseControl的和其他工具,我 看着不這樣做
我不敢苟同。如果您要配置一個<exec>
塊來調用SVN命令行工具來爲您提交代碼,那麼這不會完全符合您的要求嗎?您可以使用<filesystem>
節點來確定哪些文件被修改。
現在,儘管你可以這樣做,但我也同意@ctcherry的觀點,如果你直接用這種方式進行生產,這可能會導致破壞代碼。
聽起來像你想使用WebDAV在Subversion中進行自動版本更新。 Subversion and WebDAV
我以前使用過這種方法。這是很好的,你可以設置它像一個Windows/Linux網絡共享。非技術人員只是將其視爲存儲文件的網絡驅動器。每當用戶保存文檔/文件時,都會默默承諾。
Git可能有類似的東西,但我沒有經驗。
謝謝@SuperJames! – 2011-04-29 05:21:37
開發人員網站上,你可以開發支持這件事情一個工具,你可以看到下面的代碼,下面的代碼支持,你如何讓汽車在SVN提交,看看:)
任何意見或提問,留下您的評論,我們可以討論一下
參考代碼在這裏:
public static string AppTitle = "Auto Commit";
// AddFileToSVN
public static bool AddFileToSVN(string strLogFile, string path,
Timer myTimer)
{
try
{
using (SharpSvn.SvnClient client = new SharpSvn.SvnClient())
{
Collection changeFiles = new
Collection();
client.GetStatus(path, out changeFiles);
foreach (SharpSvn.SvnStatusEventArgs changeFile in
changeFiles)
{
if (changeFile.LocalContentStatus ==
SharpSvn.SvnStatus.Missing)
{
client.Delete(changeFile.Path);
WriteLog(strLogFile, changeFile.Path + " Removed -
Missing files (that are not in filesystem)");
myTimer.Enabled = false;
}
if (changeFile.LocalContentStatus ==
SharpSvn.SvnStatus.NotVersioned)
{
client.Add(changeFile.Path);
WriteLog(strLogFile, changeFile.Path + " Added -
This file is new in filesystem!");
myTimer.Enabled = false;
}
}
return true;
}
}
catch (Exception ex)
{
myTimer.Enabled = true;
WriteLog(strLogFile, ex);
return false;
}
}
// CommitToSVN
public static bool CommitToSVN(string strLogFile, string workingcopy,
string message, Timer myTimer)
{
using (SharpSvn.SvnClient client = new SharpSvn.SvnClient())
{
SharpSvn.SvnCommitArgs args = new SharpSvn.SvnCommitArgs();
args.LogMessage = message;
args.ThrowOnError = true;
args.ThrowOnCancel = true;
try
{
myTimer.Enabled = true;
return client.Commit(workingcopy, args);
}
catch (Exception ex)
{
myTimer.Enabled = true;
WriteLog(strLogFile, ex);
return false;
}
}
}
查看更多信息:從here
看到這個問題上程序員:[讓非程序員參與的簡單方法(即設計師)使用版本控制?](http://programmers.stackexchange.com/questions/43819/easy-way-of-engaging-non-programmers-ie-designers-into-using-version-control) – CharlesB 2011-04-27 17:26:04