2016-03-22 6 views
0

私はUnicorn 3をインストールしたSitecore 7.2ソリューションを持っています。Unicorn 3は、透過的な同期が有効になっていないときにディスクにアイテムを同期します。

私は提供されているデフォルトの設定ファイルを使用しています。開発では、私は非開発環境にソリューションを展開するとき、それが戻っfalseにenableTransparentSyncを切り替えれるように、私はtransofrmファイルを作成した最初の同期

<dataProviderConfiguration type="Unicorn.Data.DataProvider.DefaultUnicornDataProviderConfiguration, Unicorn" enableTransparentSync="true" /> 

をやった後、透明の同期を有​​効にしています。

この解決策の中で、いくつかのカスタム・モジュールがあり、私はパッケージをインストールするコマンドラインを実行すると、私はコマンドを使用していますベンジャミンVangansewinkelによって作成されたパッケージインストーラ (https://github.com/VGBenjamin/PackageInstaller

、それはその私に与えてディスクへのymlファイルへの書き込みができないことを示すエラー。

この環境でUnicorn.configファイルを確認したところ、enableTransparentSyncがfalseに設定されていることが確認できました。

インストールしようとしているパッケージは、/ sitecore/content/Applications/Content Editor/Context Menues/Default /にアイテムを作成しようとしていますが、デフォルト設定では/ sitecore/content/Applications /同期されます。

devマシンでは、すべてのサイトコアモジュールがインストールされ、/ sitecore/content/Applications/Content Editor/Context Menues/Default /のymlファイルがディスクにシリアル化されます。

これは私の誤解かもしれませんが、透過的な同期が無効になっている場合は、変更がSitecoreに変更されたら、ユニコーンコントロールパネルに移動してすべての変更を手動で同期する必要があると思いました。ですから、透明同期が有効になっていないときにディスクに変更を書き込めないというエラーが発生するのはどうしてですか?

今、別のオプションは、default.config

<include database="core" path="/sitecore/system/Field types"/> 
<include name="Core Settings" database="core" path="/sitecore/system/Settings" /> 
<include name="Core Start Menu" database="core" path="/sitecore/content/Documents and settings/All users"/> 
<include name="Core Applications" database="core" path="/sitecore/content/Applications"/> 

から次の行を削除することになります。しかし、私はユニコーンが透明の同期を使用しているように見える理由を知りたいことをやる前に。

FYI:あなたは内部例外がRainbow.Storage.SerializationFileSystemTree.WriteItem(IItemData項目、文字列のパス)でディスク にアイテムを保存しようとしている見ることができ、これは完全なエラー・スタックである

2016-03-22 15:38:15,996 [1] ERROR Sidewalk.SC.PackageInstaller.Client.Program [(null)] - System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.UnauthorizedAccessException: Access to the path 'D:\Websites\CI\Website\Unicorn\Default Configuration\Core Applications\Applications\Content Editor\Context Menues\Default\Bulk Export.yml' is denied. 
    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) 
    at System.IO.File.InternalDelete(String path, Boolean checkHost) 
    at Rainbow.Storage.SerializationFileSystemTree.WriteItem(IItemData item, String path) 
    at Rainbow.Storage.SerializationFileSystemTree.Save(IItemData item) 
    at Unicorn.Data.DataProvider.UnicornDataProvider.SaveItem(ItemDefinition itemDefinition, ItemChanges changes, CallContext context) 
    at Unicorn.Data.DataProvider.UnicornSqlServerDataProvider.SaveItem(ItemDefinition itemDefinition, ItemChanges changes, CallContext context) 
    at Sitecore.Data.DataProviders.DataProvider.SaveItem(ItemDefinition item, ItemChanges changes, CallContext context, DataProviderCollection providers) 
    at Sitecore.Data.DataSource.SaveItem(ID itemID, ItemChanges changes) 
    at Sitecore.Data.Engines.EngineCommand`2.Execute() 
    at Sitecore.Data.Engines.DataEngine.SaveItem(Item item) 
    at Sitecore.Data.Managers.ItemProvider.SaveItem(Item item) 
    at Sitecore.Data.Items.ItemEditing.AcceptChanges(Boolean updateStatistics, Boolean silent) 
    at Sitecore.Install.Items.ItemInstaller.VersionInstaller.InstallVersion(Item version) 
    at Sitecore.Install.Items.ItemInstaller.VersionInstaller.PasteVersion(XmlNode versionXml, Item target, VersionInstallMode mode, IProcessingContext context, Boolean removeOtherVersions) 
    at Sitecore.Install.Items.ItemInstaller.InstallEntry(PackageEntry entry) 
    at Sitecore.Install.Items.ItemInstaller.Flush() 
    at Sitecore.Install.Framework.SinkDispatcher.Flush() 
    at Sitecore.Install.Utils.EntrySorter.Flush() 
    at Sitecore.Install.Framework.EntryBuilder.Flush() 
    at Sitecore.Install.Zip.PackageReader.Populate(ISink`1 sink) 
    at Sitecore.Install.Installer.InstallPackage(String path, Boolean registerInstallation, ISource`1 source, IProcessingContext context) 
    at Sitecore.Install.Installer.InstallPackage(String path, ISource`1 source, IProcessingContext context) 
    at Sidewalk.SC.PackageInstaller.Service.SitecorePackageInstaller.InstallPackage(String path) 
    --- End of inner exception stack trace --- 
System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.UnauthorizedAccessException: Access to the path 'D:\Websites\CI\Website\Unicorn\Default Configuration\Core Applications\Applications\Content Editor\Context Menues\Default\Bulk Export.yml' is denied. 
    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) 
    at System.IO.File.InternalDelete(String path, Boolean checkHost) 
    at Rainbow.Storage.SerializationFileSystemTree.WriteItem(IItemData item, String path) 
    at Rainbow.Storage.SerializationFileSystemTree.Save(IItemData item) 
    at Unicorn.Data.DataProvider.UnicornDataProvider.SaveItem(ItemDefinition itemDefinition, ItemChanges changes, CallContext context) 
    at Unicorn.Data.DataProvider.UnicornSqlServerDataProvider.SaveItem(ItemDefinition itemDefinition, ItemChanges changes, CallContext context) 
    at Sitecore.Data.DataProviders.DataProvider.SaveItem(ItemDefinition item, ItemChanges changes, CallContext context, DataProviderCollection providers) 
    at Sitecore.Data.DataSource.SaveItem(ID itemID, ItemChanges changes) 
    at Sitecore.Data.Engines.EngineCommand`2.Execute() 
    at Sitecore.Data.Engines.DataEngine.SaveItem(Item item) 
    at Sitecore.Data.Managers.ItemProvider.SaveItem(Item item) 
    at Sitecore.Data.Items.ItemEditing.AcceptChanges(Boolean updateStatistics, Boolean silent) 
    at Sitecore.Install.Items.ItemInstaller.VersionInstaller.InstallVersion(Item version) 
    at Sitecore.Install.Items.ItemInstaller.VersionInstaller.PasteVersion(XmlNode versionXml, Item target, VersionInstallMode mode, IProcessingContext context, Boolean removeOtherVersions) 
    at Sitecore.Install.Items.ItemInstaller.InstallEntry(PackageEntry entry) 
    at Sitecore.Install.Items.ItemInstaller.Flush() 
    at Sitecore.Install.Framework.SinkDispatcher.Flush() 
    at Sitecore.Install.Utils.EntrySorter.Flush() 
    at Sitecore.Install.Framework.EntryBuilder.Flush() 
    at Sitecore.Install.Zip.PackageReader.Populate(ISink`1 sink) 
    at Sitecore.Install.Installer.InstallPackage(String path, Boolean registerInstallation, ISource`1 source, IProcessingContext context) 
    at Sitecore.Install.Installer.InstallPackage(String path, ISource`1 source, IProcessingContext context) 
    at Sidewalk.SC.PackageInstaller.Service.SitecorePackageInstaller.InstallPackage(String path) 
    --- End of inner exception stack trace --- 
    at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall) 
    at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters) 
    at Sidewalk.SC.PackageInstaller.Client.ServiceReference.SitecorePackageInstaller.InstallPackage(String path) in C:\Projects\PackageInstaller\Sidewalk.SC.PackageInstaller.Client\Web References\ServiceReference\Reference.cs:line 88 
    at Sidewalk.SC.PackageInstaller.Client.Program.Main(String[] args) in C:\Projects\PackageInstaller\Sidewalk.SC.PackageInstaller.Client\Program.cs:line 281 

更新誰もが、問題は私のCI環境に関連して認識している、と私は展開proceの一部としてエラーを取得していますので、ジャスト

ss。

アップデート2

私は、ブログの記事、http://kamsar.net/index.php/2015/10/Unicorn-Introducing-Transparent-Sync/を読んだことがある、と私は明らかにまだ何かを理解しています。

次のテキストがあります:

注:あなたがそれを有効にする前に、あなたは透明な同期をオフにした構成の初期シリアル化を実行する必要があります。それ以外の場合は、透明な同期がディスク上のすべてのゼロ項目を表示するので、設定内の項目は消えるように見えます!上に透明の同期をオンにする

は本当に簡単です:あなたが透明の同期を追加したい取ると、それに次の行を置く:

一度トランスペアレント同期

は、あなたが持っているすべて有効になっていますディスク上のアイテムを変更するだけです。アップデートはすぐにSitecoreに表示されます。

これを読んで、透明同期をオンにできる場合は、もう一度オフにすることができます。

Readmeの確認https://github.com/kamsar/Unicorn私はあなたの他の環境で同期することを前提としています。展開を行った後、powershellを使用してコントロールパネルにhttpクエリを発行することができます。

透過的な同期をオフにできない場合は、CI環境に展開するときに透過的な同期を停止するためのベストプラクティスは何ですか? PowerShellを使用して更新を行います。

現時点では私は私はあなたが透明Syncを誤解していると思う透明の同期は、開発環境で

答えて

0

を仕事をしたいです。

それは何ですか。新しい同期を実行することなく、更新されたYMLをすぐにSitecoreに反映させることができます。これは、Sitecoreに変更を提供するための卑劣なデータによってこれを行います。これは、あなたがGITから引っ張ったばかりの場合や、ブランチを切り替える場合に便利です。同期を取らない(または忘れる)という面倒を取り除きます。

Sitecoreの変更の自動同期を無効にします。これらは、ユニコーンが制御するように指示されたコンテンツツリーのどの領域であっても、常にディスクに書き込まれます。

実際には、あなたが書いたもののほぼ反対です。 "これは私の誤解かもしれませんが、透明な同期が無効になっている場合は、Sitecoreに変更が加えられたら、ユニコーンコントロールパネルに移動して手動ですべての変更を同期する必要があります。透明な同期が有効になっていないときにディスクに変更を書き込むことができます。

参照:http://kamsar.net/index.php/2015/10/Unicorn-Introducing-Transparent-Sync/

+0

私は元の質問であるアップデート2を更新しました。 –

関連する問題