Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 17

70
votes
answers
29 views
+10

How to change credentials for SVN repository in Eclipse?

I have Eclipse 3.4.2 installed on Windows with subclipse. Another developer added an SVN repository with his credentials and selected 'Save password'. Now every time I do anything with SVN his cached credentials are used. How can I change them to mine?

I have already checked the 'workspace/.metadata/.plugins/org.tigris...' folders, and could not find any way to reset those cached credentials.

沙发
+130

在Mac OS X上,轉到文件夾/ $ HOME(/ Users / {user home} /)。您將看到文件'.eclipse_keyring'。去掉它。所有保存的憑據都將丟失。

板凳
+110

在任何Windows版本上刪除以下文件夾:

%APPDATA%Subversionauth

(您可以將其複制並粘貼到RUN / Explorer,以及它將為您解析App-Data-Folder。)

在Linux和OSX上,它位於

?/ .subversion / auth

來源: http:// www。 techcrony.info/2008/03/26/admin/how-to-change-eclipse-svn-password/

地板
+100

大家好,在Eclipse中更改用戶名和密碼太簡單了。

只需按照以下步驟操作:

在Eclipse中,

 轉到窗口 - > 顯示視圖 - > 其他 - > (輸入為)SVN存儲庫 - > 點擊那個(SVN Repositories) - > 右鍵單擊SVN存儲庫 - > 位置屬性 - > “常規”選項卡更改憑據的以下詳細信息。  

這就是它們。

4楼
+80

在Windows 7上,轉到C:Users %User_Name%AppDataRoamingSubversion並刪除auth目錄。請注意,如果您連接到多個SVN服務器,則會刪除已配置的所有SVN服務器的身份驗證。如果只想重置一台服務器:

在auth目錄中,您應該看到一個名為svn.simple的文件夾。使用文本編輯器打開每個文件,以確定要刪除哪個文件,然後只刪除該文件。

5楼
+60

非常簡單的步驟:Eclipse:Window ----> 偏好-----> SVN -----> SVN接口----->選擇SVNKit(純Java)

6楼
+60

在Windows中:

  1. 打開運行類型%APPDATA%Subversionauthsvn.simple
  2. 這將打開 svn.simple 文件夾
  3. 你會找到一個文件,例如Big Alpha Numeric file
  4. 刪除該文件。
  5. 重啟eclipse。
  6. 試試從項目編輯文件並提交它
  7. 你可以看到詢問用戶名密碼的對話框

    它對我有用....;)

+1。與Mt.相關 Lion / Eclipse Juno組合。 - 鮑里斯·布魯德諾伊於2012年8月6日16:12

非常感謝!我無法相信Eclipse上沒有人注意到在Mountain Lion中很難看到如此微小尺寸的字母...... - Fran Marzoa 12年12月19日15:31

輝煌!刪除該行會使Project / Package等視圖中的文本顯著增大,這對2550 x 1600顯示器有很大幫助。 - Brent Faust 2013年3月2日22:33

所提到的行不止一次出現。我刪除所有這些後,它工作。這是針對Android版本23.0的Eclipse。 - Avi Cohen 2014年7月17日6:20

在El Capitan / Mars為我工作。位置是Applications / Eclipse.app / Contents / Eclipse / eclipse.ini - Eiko 2016年7月1日11:54

7楼
+50

我無法找到 svn.simple 文件,但能夠使用以下三個步驟更改憑據:

從SVN結帳項目 < p>

選擇更改憑據所需的存儲庫(注意:您不會執行結賬,但這會將您帶到屏幕上輸入用戶名/密碼組合。)

最後,輸入新的用戶名和密碼憑證:

這有點令人困惑,因為您開始初始化新項目的過程,但您只是重置了存儲庫憑據。

請注意,某些插件可能會覆蓋窗口的設置,並在首選項>顏色和字體中擁有自己的字體系統,如EGit。 - rveach於2016年2月18日16:22

要在最新的Windows 7中找到這些設置:控制面板 - >搜索“窗口顏色”,請單擊“更改窗口顏色和指標”。 - 技術愛好者2016年4月20日16:07

8楼
+30

在任何Windows版本上都遵循以下路徑:

C:Users {user_name} AppDataRoamingSubversionauthsvn.simple

然後刪除裡面帶有十六進制代碼的文件這個文件夾並重啟你的日食。

這對於Eclipse Luna on MAC感謝 - Chathura Wijesinghe於2014年12月2日14:29

在Windows7上也使用MARS SR1(4.5.1)。 - yukihane 2015年12月8日4:53

在Linux Mint上為MARS工作過。Attn:CSS文件現在位於theme-plugin的文件夾中。 - Thorsten Laux於2016年2月13日20:03

在這里工作得很好。Windows上的火星4.5.2 7.文件的確切位置 /plugins/org.eclipse.ui.themes_1.1.1.v20151026-1355/css/e4_basestyle.css - kr.pradeep 2016年3月4日16:02

在我的Ubuntu 14.04上,當使用默認的經典主題時,由於某種原因,eclipse / plugins / org.eclipse.ui.themes_x.xxvxxxxx / css中要更改的文件是e4_classic_winxp.css。這很令人困惑,因為我應該使用winxp版本,而不是win7,甚至是默認版本,這是顯而易見的。最後它奏效了。 - 安迪2016年4月26日23:43

9楼
+30

(Windows 7 Eclipse Indigo 3.7)

C:Users AppDataRoamingSubversionauthsvn.simple

查找svn信息文件並使其可寫。
(它們是默認只讀)(不需要重啟eclipse)

不幸的是,當項目添加到倉庫時,這種行為不正確(這意味著版本控制的小圖標出現在每個文件旁邊)。我說的是行為,而不是工作,因為有些文件顯示正確的字體,有些則沒有!他們每隔幾秒鐘就會不斷變化!看起來很奇怪。 - Abdalrahman Shatou 2014年4月8日16:15

@AbdalrahmanShatou:我也經歷過這種“閃爍”,當點擊元素時,字體變大,字體變小,反之亦然。我正在使用Eclipse Mars 4.5.1。和 - 像你一樣我也在使用(.git)存儲庫。我猜這是觸發器。 - Hartmut P. 2015年12月8日18:42

您還需要更改git插件的字體以匹配此設置。Windows->首選項 - >常規 - >外觀 - >顏色和字體將2 git條目中的字體更改為12•忽略資源(字體)•未提交更改字體然後重啟eclipse - Steve Adams 18年11月29日11:04

10楼
+30

我想出了我在下面編寫的方法,它在我的日食中非常適合

,請按照以下簡單步驟操作:文件 - &gt; 導入 - &gt; type svn - &gt; 來自svn的項目 - &gt; 下一個 - &gt; 創建新的存儲庫位置 - &gt; 下一步 - &gt; 您會在身份驗證菜單下看到“安全存儲”。單擊此按鈕“安全存儲”。這是我們可以刪除所有密碼緩存的地方。現在,您可以按照以下步驟操作:

  1. 在密碼選項卡下,單擊“清除密碼”
  2. 在“內容”選項卡下,轉到SVN,選擇每個子選項,然後單擊“刪除”
  3. 重新啟動eclipse

    現在所有存儲的密碼都已消失,

謝謝!18個答案,但這是唯一一個適合我的人...... - Michal Tenenberg 2016年3月2日10:57

更簡單的方法CTRL + 3 - >類型安全存儲 - 托尼6月18日8:48

像魅力一樣工作。如果您定義要更改的字體會更好。 - Abdalrahman Shatou 2014年4月8日16:44

適合我。我在約塞米蒂 - Lou Morda 2014年11月30日0:10

在Sierra上為我工作!謝謝 - jainp 2017年2月8日22:18

在High Sierra(10.13.2)為我工作!謝謝你的looooot! - 埃里克18年1月14日11:59

11楼
+10

刪除位置:configurationorg.eclipse.core.runtime下的.keyring文件,之後,系統會邀請您提示新的svn帳戶。

謝謝!在Windows 8.1上的Mars 4.5.1上工作得很好 - 我有一個帶有WQHD +(2560 x 1440)屏幕的Lenovo X1 Carbon,並且默認的字體大小是不可能的。這很好地修復了它。有人需要推動核心Eclipse團隊並讓他們意識到這些非常高分辨率的屏幕變得越來越普遍,需要一些簡單的用戶控制......謝謝! - 戴夫在奧斯汀2015年10月29日1:35

在Eclipse kepler linux中使用文件e4_default_gtk.css - cdarwin 17年7月27日在18:05

可能重複如何在Eclipse Classic中安裝Eclipse Marketplace? - 湯姆塞德爾12年11月21日10:52

請參考這個 - > [如何在Eclipse Classic中安裝Eclipse Marketplace?] [1] [1]:stackoverflow.com/questions/5285623/玩得開心!@。@ Thanks - Luna Kong 2014年2月24日10:18

12楼
+10

刪除位置:configurationorg.eclipse.core.runtime下的.keyring文件,之後,系統會邀請您提示新的svn帳戶。對我而言,它有效。

適用於OS / X上的Mars。如果你想知道,這些值所在的CSS路徑是Shell [style~ ='SWT.RADIO'] [style~ ='SWT.CASCADE'] [style~ ='SWT.SHADOW_ETCHED_IN'] [style~ ='SWT。 SHADOW_ETCHED_OUT'] [style~ ='SWT.RESIZE'] [style~ ='SWT.MENU'] [style~ ='SWT.FULL_SELECTION'] [style~ ='SWT.DATE']> Composite> *> Tree - 大衛·多斯特2015年9月17日21:21

證實。快速提示,搜索今天的“樹”,它是text =“tree”的唯一分組。不要搜索font-size,這是你必須添加的。推薦14 pt for 1080p - Nick 2016年3月29日18:27

適用於Eclipse Oxygen Release(4.7.0),在Cent-OS下使用Gnome 3.14.2。謝謝! - Volodymyr Krupach於2017年9月4日15:36

13楼
0

我正在使用svn + ssh協議來訪問SVN。我必須做的就是修復類似的問題,就是打開Putty並重新配置它,以便它在保存的會話中沒有wrong_user_name @ myserver而是correct_user_name @ myserver。

14楼
0

在Eclipse中:Ctrl + F8 - &gt; SVN Repository Exploring - &gt; 右鍵單擊存儲庫 - &gt; 位置屬性 - &gt; 完成;)

謝謝,這是缺失的部分,因為有些項目使用正確的字體,有些則沒有。 - john16384 17年1月22日10:54

15楼
0

我在Windows機器(Windows 7)上的以下路徑中刪除 svn.simple 目錄中的文件:

  C:Users [user_name] AppDataRoamingSubversionauth   

問題解決了。

107
votes
answers
29 views
+10

SVN: Can you remove directories from a local checkout only (not from the repository)?

Assume that you have a directory under subversion control, that contains some files and tons of subdirectories, like that:

file1.txt
file2.txt
file3.txt
dir1/
dir2/
dir3/
dir4/
:
dirXX/

Now you need the files and some of the dirs, but not all of them. This can be done with SVN. Just make the checkout non-recursive:

svn checkout -N <URL>

This checks out only the first directory and the files inside. No subdirectories are included. Even if you go into the checkout directory and run a "svn up", it will only update the files checked out previously, it will not add the directories. You can now selectively add the directories you need by explicitly updating those. E.g. if you need dir2 and dir4 only, you can go into the checkout directory and execute

svn up dir2
svn up dir4

If you run a generic "svn up" in the future, it will only update the files and those two directories, it will not add any of the other directories.

Now the problem: What if I decide at any later point that I don't need dir2 any longer? How do I get rid of it? There seems no way of doing so, other than deleting the whole checkout and start over from scratch.

When you just delete dir2, the next "svn up" will bring it back, as "svn status" of course shows it as missing now ("!" in front of its name). Running a "svn remove" will remove it of course, but on next commit it will also remove it from the repository, which must not happen.

Even the new sparse directory ("shallow checkout") feature of SVN 1.5 is of no use here:

Subversion 1.5's implementation of shallow checkouts is good but does not support a couple of interesting behaviors. First, you cannot de-telescope a working copy item. Running svn update --set-depth empty in an infinite-depth working copy will not have the effect of discarding everything but the topmost directory—it will simply error out.
- http://svnbook.red-bean.com/en/1.5/svn.advanced.sparsedirs.html

Is this complete impossible with SVN? Anyone ever came up with a clever work-a-round to that?

Just creating the checkout directory (without SVN) and then checking out the individual subdirectories from the repository directly as subdirectories to this directory will work for the directories: now every directory is a checkout of its own, can be updated and once not needed any longer, you can just delete it. However, how do I get the files then (e.g. file1.txt)? SVN does not allow to checkout individual files, you can only checkout whole directories.

up vote 57 down vote accepted favorite
沙发
+570
+50

Subversion 1.4或Subversion 1.5無法完成我想要做的事情。期。
沒有解決方法存在,這就是它的方式。

不過,它可以用Subversion 1.6完成。

與SVN 1.5不同,SVN 1.6可以減少目錄的深度

svn up --set-depth exclude dir2

是解決方案。它將dir2的深度設置為零,並且它將立即從結帳中消失,並且沒有更新會將其恢復,除非您再次明確地將此目錄的深度設置為某個值(或者只是在沒有深度選項的情況下對其進行更新,因為不給予任何深度總是意味著無窮大,除非你使用非遞歸,這意味著“文件”)。

提示:
實際上SVN 1.6無法真正減少深度,就像增加深度一樣。您可以將它從任何級別增加到任何更高級別。您只能將其縮小為“排除”(所有的最低級別)。如果要從“無限”(最高)減少到“文件”(中間的某個位置),必須首先將其縮小為“排除”(導致目錄消失),然後再將其再次增加回“文件”。這有點像黑客,但它的效果很好。

This didn't work for me after I had deleted the directory with rm. I had to revert it first and then run this command, but it was successful after that. – Nickolai Nov 15 '18 at 20:25

+1 multiple directories can be excluded by giving space separated values. Example: svn up --set-depth exclude dir1 dir2 dir3 – Ritesh Jul 31 '14 at 17:30

+370

對於後來遇到這個並且使用TortoiseSVN的人來說,這裡是如何做同樣的事情......

  1. 右鍵單擊不再需要簽出的文件夾(這是您要排除的文件夾)
  2. 從上下文菜單中,選擇“TortoiseSVN> Update to Revision ...”
  3. 在彈出的窗口中,將“更新深度”下拉框設置為“排除”
  4. 單擊“確定”。SVN將自動從您的驅動器中刪除該目錄。

(注意:這是使用TortoiseSVN 1.7.5完成的,並且可能因其他版本而異。)

+100

更新:我正在運行SVN 1.6.11,並且我能夠使用de-telescope svn up --set-depth empty dir而不是使用exclude目錄。

+20

用svn 1.6,--set-depth就是答案。

使用svn <1.6,您可以通過濫用來獲得稀疏檢出svn switch:在您的存儲庫中的某個位置創建一個空目錄,以及switch您現在不需要的子目錄指向它而不是它們的“真實”URL。

+10

您可以嘗試這個涉及本地存儲庫和svn:externals聲明的技巧

但是,自己沒有嘗試過。

Sorry, this cannot really solve my issue. I can make a local repository and just link in some of the subdirectories, so only those appear... and I can probably unlink them (removing the external declaration) and they will go away... but I have no way to get the files fileX.txt in the main directory, as you cannot link in single files, only directories and linking in this directory links in the files and all subdirectories of it :( – Mecki Sep 17 '09 at 14:59

This sounds pretty interesting! First answer and already a very good one (upvote). Not sure if this is the best solution and if this really will solve my problem, but I should give this solution a try. Should this work and nobody has anything more simple to offer, I will accept this answer. Even if it won't solve my problem, it might solve some other SVN problems (so this knowledge is handy in any case) – Mecki Sep 17 '09 at 14:44

132
votes
answers
26 views
+10

SVN keeps corrupting files with “<<<<<<< .mine”, how to fix?

I've got a Visual Studio C# project which is under version control (SVN). I've always commited and updated the project without any problems. But a couple of hours ago Visual Studio throws the following error when I try to launch/rebuild the project:

Files has invalid value "<<<<<<< .mine". Illegal characters in path.

I don't know how to fix this problem. What should I do?

up vote 65 down vote accepted favorite
沙发
+650
+50

當svn遇到衝突時會發生這種情況:您更改了文件,服務器上的文件已更改,無法(輕鬆)自動合併。您現在需要確定什麼是正確的解決方案。

Subversion只是將diff添加到源文件中(並在其旁邊創建文件,稱為OriginalName.mine(未更改)和OriginalName.rsomething(未更改,服務器版本))。

解決衝突並告訴subversion這是解決了

修復3個文件中的哪個文件的衝突?。礦?.rOLDREV?.rNEWREV?答:沒有。相反,修復原始文件(這是正確的:SVN嘗試提交4個令人困惑的文件) - 版主於2013年1月8日18:09

謝謝大家。通過查看與我的工作副本的差異找到問題,它似乎是Debug文件夾中的一個文件(我今天從SVN中排除了它)。我的一位同事在沒有得到解決的情況下解決了問題。 - MysticEarth 2010年1月6日12:59

+360

只需刪除obj文件夾,它就可以了。

是的它也適合我。我剛剛刪除了“obj”文件夾,它對我來說很好。 - Anjan Kant 6月13日,18:00

刪除obj文件夾對我有用 - fulgen 12年1月14日在2:48

+1也適用於我。“錯誤列表”沒有列出任何特定的文件,我已經手動解決了衝突,ReSharper在解決方案中看不到任何問題,而Find找不到像“.mine”這樣的東西,但VS仍會拒絕建立甚至清潔。刪除“obj”文件夾是一個即時修復。無需重啟VS. - Mathieu Guindon 2014年1月24日15:30

@MysticEarth:如果您在解決衝突之前嘗試構建,有時會出現主題行中的錯誤,並且在您解決衝突之後不斷出現。grepping目錄並沒有發現任何與“<<<<<。mine”有關的東西,因為它嵌入在obj下面的二進制形式; 因此,你不是什麼導致構建問題,也不是如何解決它。刪除/ obj會立即修復問題。所以你錯了,obj文件夾與Subversion破壞文件有關。哼哼。 - Brandon Arnold 2013年11月27日19:18

obj文件夾與Subversion - MysticEarth於2013年11月12日8:33破壞文件無關

+100

刪除不應該在文件中拋出錯誤的代碼,並刪除擴展名為.mine的三個文件。<somerevision>和。<some_other_revision>svn更新了現在包含“衝突”的文件,您需要手動解決這些衝突。通常這意味著您編輯了一個文件,其他人編輯了同一個文件並簽入了更改,並且在簽出更改的文件時您沒有註意。

暫時忘記Visual Studio並導航到文件系統中的文件。你會在那裡找到提到的文件。您可以通過IDE解決衝突(編輯文件)。邪惡的想法:也許你的一些同事設法用裡面的衝突標記檢查該文件..? - Benjamin Podszun 2010年1月6日12:44

它將位於.csproj(或.vcproj或其他)文件或.sln文件中。您可以使用svn的適當標題“責備”功能來查看誰犯了違規行。無論是誰,都錯誤地解決了衝突。 - Pike65 2010年1月6日12:43

在不再編譯的源文件旁邊(因為衝突標記)。檢查具有相同基本名稱但擴展名不同的文件。 - Benjamin Podszun 2010年1月6日12:33

好吧,Visual Studio不提供任何文件名,只是上面的錯誤。我沒有看到任何衝突標記...... - MysticEarth 2010年1月6日12:35

也許是一個愚蠢的問題; 但我在哪裡可以找到.mine文件?我似乎無法找到它們。此外,沒有文件衝突,當我搜索所有文件“我的”時,沒有發現任何東西... - MysticEarth 2010年1月6日12:22

+60

請閱讀顛覆書中基本用法章節。它有一個關於手動合併衝突的部分它解釋了您所看到的衝突標記。

目前我正在寫一個我自己的例子,但總是svnbook有一個更全面的例子,如果你正在使用Tortoise,請查看tortoisesvn.net/docs/release/TortoiseSVN_en/index.html(特別是第4章)每日使用指南) - Oliver 2010年1月6日12:54

+60

刪除obj文件夾中的所有內容

版本控制中刪除您的obj文件夾svn因為在每個構建時它都會得到更新,當其他開發人員提交更改解決方案時,SVN無法阻止obj文件夾文件並引發錯誤

文件具有無效值“<<<<<<< .mine”。路徑中的非法字符。

+30

刪除調試文件夾對我有用(請參閱註釋 - 上面沒有回答)。將12個文件夾從svn的一個部分移動到新部分後,我得到了這個。因此,如果您在移動項目後獲得此項並且錯誤未指向實際文件,則可能是您的問題。

謝謝,這是因為調試文件夾,它沒有指向實際文件。 - Wael Dalloul 2014年3月13日13:49

+20

如果安裝了AnkhSVNVisualSVN,則很可能就像右鍵單擊解決方案資源管理器中的文件並選擇編輯衝突一樣簡單。

這將在合併編輯器中打開更改的文件。(請參閱AnkhSVN的工具 - >選項 - >源控制 - > Subversion用戶工具)。有了一個很好的合併工具,比如免費使用SourceGear DiffMerge或TortoiseMerge,只需點擊幾下鼠標即可解決衝突。

VisualSVN實際上使用TortoiseSVN來做到這一點。您還可以通過右鍵單擊Windows資源管理器中的文件並選擇“編輯衝突”來使用TortoiseSVN。 - djeidot 2011年8月29日17:21

+10

我已經大規模地發生了這種情況,其中文件被標記為已解決,但衝突元數據仍然存在。我為visual studio編寫了一個正則表達式來查找這些,例如,簡單地還原已更改的文件是不可行的。

http://www.codetunnel.com/blog/post/90/ever-merge-with-svn-and-mess-up-when-resolving-conflicts-read-on

+10

I closed the IDE, then deleted the obj folder and restarted the IDE and rebuilt my Code. This worked for me.

無需關閉/重新打開VS. 單擊解決方案資源管理器中的“顯示所有文件”,然後刪除“Obj”文件夾。完成。 - Mathieu Guindon 2014年1月24日15:31

If the data was encrypted and an properly backed up a compromised server would not lead to any loss of sensitive data . – Dez Udezue Jun 18 '10 at 15:46

Theoretically that's what an encrypted filesystem would do. – John Weldon Jun 18 '10 at 16:05

@JohnWeldon theoretically an encrypted file-system does not do revision control. We need both, in a way that is compatible, so I can push to github or bitbucket. – ctrl-alt-delor Aug 29 '16 at 21:01

+10
  • Inside your project :

    odj folder -> Debug -> project name.csproj.Filelistabsolute.txt(snb.csproj.Filelistabsolute.txt)

  • Inside the text file >>>>>>>.mine and >>>>>>>.r150 occurs to remove the things the program works

@Craig McQueen, is there any alternative that does cope well with the compromise of a client's key to the VCS archive? Using one key for each VCS archive shared among all users sounds bad -- the bad guys only need to compromise any one client of their choosing, and then they can read all the data in the VCS archive. But giving each client a unique key, as in the ssh approach, is no better -- the bad guys only need to compromise any one client of their choosing, and then they can read all the data in the VCS archive. – David Cary Aug 11 '10 at 20:14

Interesting idea. Clients must all use the same keys I assume. Probably doesn't cope well with any compromise of clients' keys. – Craig McQueen Aug 10 '10 at 11:33

Well, any key compromise gives your data to the bad guys. I was thinking more about the cost of revoking a key. If only the data channel is encrypted, then you can assign individual keys. If you no longer trust one user, you can just revoke their key, with no impact on other users. But if there is a single key, a new key must be rolled out to all other users. If the data itself is encrypted with a key that (by necessity) all the clients must know, then the only way to revoke the key is to re-encrypt the entire repository and roll the new key out to all clients. – Craig McQueen Aug 11 '10 at 22:34

I gave you a better solution to the server compromise problem. I was hoping you would give me a better solution to the client compromise problem, but perhaps there isn't one. Yes, there is a tradeoff. In the case where a client is compromised, the ssh approach is better. In the case where a server is compromised, the rsyncrypto approach is much better. – David Cary Aug 16 '10 at 14:59

@CraigMcQueen. Rsyncrypto uses one RSA key as the master key, and each file is encrypted with a different symmetric key. It should be possible to change the master key once compromise, and have all new files unreadable to whoever read it before. – Shachar Shemesh Apr 14 '15 at 14:18

+10

1)Just save your local changes whatever u have edited in the file

2)revert the file

3)update it from SVN

4)Paste your local changes

這是我一直在做的事情來解決這個錯誤。 - MansoorShaikh 2017年3月28日11:35

0

If you are using TortoiseSVN you should have a right click option on the file called Edit Conflicts. This should bring up TortoiseMerge which is able to read those obnoxious notations stuck into the file (really, to break your code so you KNOW there's an issue and don't blindly check it in).

TortoiseMerge will read it properly and present you with a 3-way merge. This was what I was looking for. Although it is true that it does also create the separate .mine and .rxxx and .ryyy files, and there are various manual and command-line ways to deal with all this.

git-annex has a Tahoe-LAFS hook : git-annex.branchable.com/forum/… – Jeff Burdges Nov 21 '11 at 21:20

18
votes
answers
43 views
+10

Graphical multiple file-pair comparison on Mac OS 10.7

Is it possible to view "svn diff" output graphically on Mac OS?

Most of the graphical diff programs allow you to view only one file per time. Which is very inconvenient when you use svn and have changed like 10 files.

For Linux I have found a solution in "kompare" program. I do:

svn diff > diffOut; kompare diffOut

and as result I work with graphical program and check all files at once like it shown on the picture.

Is there same thing for Mac OS?

P.S. "meld" programm seems to do the same (or it doesn't?), and I have already tried to install it, but got an error. Therefore I supouse that I can't install it under OSx 10.7.

+90

KDiff是一個開源的可視文本差異程序。您可以在windows,unix,linux和Mac OSX中使用它。試試吧。在Windows上,它會自動為svn diff添加自己。我不使用Mac OSX因此不能說這個功能也可用。

比較或合併兩個或三個文本輸入文件或目錄,

來自kdiff3網站的以下圖片網址顯示它比較目錄。

它不進行MULTIPLE文件比較,當時只有一個。這對我來說非常不方便。如果我錯了,請告訴我有關熱的更多細節,以類似於我使用“kompare”的方式在svn中使用它。 - klm123 12年8月19日20:28

@ klm123:當前版本(0.9.97)可以一次同步三個文件夾。我不確定這是你想要的。 - sinuhepop 2013年7月11日10:01

界面凌亂而且不直觀:/ - melanke 2014年1月29日12:40

該計劃緩慢而笨拙。即使是小文件也存在問題。不建議。 - SmallChess 2016年3月21日3:12

+40

DiffMerge既自由又精彩。也進行3路比較和合併。

我一直在使用DiffMerge,它很酷,但你只能從左到右合併,從右到左合併你必須以相反的順序打開這兩個文件夾 - melanke 2014年1月28日在18:16

我同意,它不如kdiff3那麼好。 - Attila Fulop 2014年1月29日9:43

是的,但kdiff3接口是凌亂的,我不明白如何使用 - melanke 1月29日'14在12:39

地板
+30
+50
  1. 有適用於Mac OS的kompare。它是KDE SDK的一部分,可以使用MacPorts獲取它:

    sudo port install kdesdk4
    launchctl load -w /Library/LaunchAgents/org.freedesktop.dbus-session.plist
    export PATH="/Applications/MacPorts/KDE4/kompare.app/Contents/MacOS:"$PATH
    

    它的工作原理!

  2. Svn支持所謂的外部差異

要使用它,應該創建svn-wrapper腳本,它將獲取“svn diff”命令返回的參數,並且調用因所需參數而異。

這是參數“svn diff”返回的示例:

-u -L code/Class1.h (revision 16518) -L code/Class1.h (working copy) code/.svn/text-base/Class1.h.svn-base code/Class1.h

opendiff需要最後兩個。因此,下一個bash 腳本將是合適的:

#!/bin/sh

if [ $# -lt 2 ]; then
    echo "usage: $0 [ignored args...] file1 file2" >&2
    exit 1
fi

# The last two arguments passed to this script are the paths to the files
# to diff.
while [ $# -gt 2 ]; do
    shift
done

exec opendiff $*

把這個腳本放在svnwrapper.sh文件中。Made file可執行文件:

chmod +x svnwrapper.sh

並把它放在一些公共路徑中,它被添加到$ PATH變量中。現在你可以使用svn調用

svn diff --diff-cmd=svnwrapper.sh

或者只是添加?/ .subversion / config文件中的[helpers]部分:

diff-cmd = svnwrapper.sh

在小牛隊,我得到沒有ksycoca4數據庫可用! - Wolfgang Fahl 2015年1月11日6:54

+20

如果你想從比較目錄結構和目錄中的文件快速切換,萬花筒是一個非常好的選擇。也可以比較2個以上的副本。我還有一種印象,比較文件(匹配塊和顏色代碼更改)的算法非常好。最後,可以進行為期15天的試用,而不是您需要支付的費用。

好吧,我買了它,我很高興用戶所以我推薦它。 - stymek 2014年1月30日13:51

0

我不太確定我是否理解正確,但是我在mac上使用帶有subclipse插件的Eclipse。

http://www.eclipse.org/downloads/?osType=macosx

請務必閱讀頁面以獲取正確的版本,並考慮您使用的svn版本。

http://subclipse.tigris.org/servlets/ProjectProcess;jsessionid=1BCECCE84434FF08FDE32136D13FF061?pageID=p4wYuA

安裝後,您可以選擇同步透視圖,查看所有衝突且需要更改的文件。

我不確定它是否會讓你說差異隨機文件,我認為你的問題。你可以嘗試一下。

它可以用作“svn diff | eclipse”或“svn diff --diff-cmd = eclipse”,結果顯示在帖子中的圖片上嗎? - - 2012年8月19日21:23 klm123

命令行沒有,抱歉。它是一個完整的IDE與subversion集成。同步視圖在樹視圖中顯示具有差異,衝突等的文件。然後,您可以編輯特定文件以在圖片中獲得相同類型的事件。基本上你不需要命令行。您只需右鍵單擊文件資源管理器中的文件,然後單擊“與...比較”>修訂版,或“從repos中更新”選擇修訂版,然後您將獲得差異視圖。 - 埃米爾2012年8月19日22:56

對不起,我不需要完整的IDE。 - - 2012年8月19日23:04 klm123

沒問題,添加了一個Grahams答案的鏈接,就像我檢查cmd線時發現的那樣。 - 埃米爾2012年8月20日9:14

stackoverflow.com/questions/187064/graphical-diff-for-mac-os-x還涵蓋了類似問題的許多其他答案。 - 埃米爾2012年8月20日9:16

0

這是一個很好的文件文件差異工具。P4Merge:http://www.perforce.com/product/components/perforce-visual-merge-and-diff-tools

0

Bruno De Fraine編寫了一些腳本,為每個文件啟動OSX的FileMerge:http//www.defraine.net/~brunod/fmdiff/

安裝

> svn co http://soft.vub.ac.be/svn-gen/bdefrain/fmscripts/ fmscripts
> cd fmscripts
> make
> sudo make install

Diff(為每個文件啟動FileMerge)

> svn diff --diff-cmd fmdiff
0

超越比較不是免費的,但我已經使用它並喜歡它。

0

在這裡您可以找到最新版本的Meld for OSX .dmg安裝程序。

-20

Beyond Compare是您可以添加到列表中的另一個。它是免費和跨平台的(Windows,Mac,Linux)。

0
votes
answers
42 views
+10

svn的高級開發人員確認前提交代碼

2

我想通過高級開發人員來檢查初級開發的代碼,他們承諾他們的代碼SVN之前。我如何使用SVN管理它?我的觀點是高級開發人員通知Junior開發人員想要提交他們的代碼(例如通過電子郵件),並在他們確認後,代碼提交。 我們的SVN是windows服務器上svn的高級開發人員確認前提交代碼

謝謝。

+1

我不認爲在Subversion中有這樣的支持。也許你想探索轉向Git。 – tripleee

+1

雖然git支持更好的分支策略,但「這樣的事情」被誇大了。 –

沙发
0
1

顛覆不直接支持「代碼審查」的模式一樣,你可以用來與GitHub的拉動請求。有一些附加工具可能對此有所幫助,但我不能推薦任何,因爲我從未使用它們。

你可能想嘗試是有開發商在自己的分公司工作,並承諾這一點,那麼請高級開發人員來審查,然後合併到中央幹線或另一個分支。

+0

這。對此的附錄是,這實際上可以通過svn authz文件實施。授予(初級?)開發人員對分支機構的讀寫訪問權限,並嚴格閱讀中繼線的訪問權限。然後,給高級開發人員讀/寫訪問幹線(以及分支機構,如果需要的話)。這樣,合併到主幹__中的唯一更改就是來自高級開發人員。 – Chris

板凳
0
1

有兩種可能性:

  1. 您可以使用分支和SVN的--reintegrate選項將它們合併自動回主幹。這工作得相當好,只要你遵循一些規則(可以彎曲他們,你可以打破他們,但你會遇到困難):

    • 從來沒有做任何樹合併(合併子目錄;僅在主幹或分支合併級別)
    • 在不同的分支之間永不合並,除了你正在分支的路徑(通常這是幹線)。所以沒有同事交叉。
    • 總是將分支中的所有提交合併到中繼,並始終將中繼中的分支完全同步。所以沒有采摘櫻桃
    • 通過遵循這些規則,您可以輕鬆地合併並保持您的樹幹清潔,而無需使用任何修訂版本號。有關更多詳情,請參閱svnbook/merging
    • 也意味着整合合併(從developerbranch到後備箱)總是無衝突的(樹幹)的所有變化通常是由開發商事先合併。如果主幹維護者合併過程中遇到衝突,他拒絕分支,並告訴開發人員同步從主幹合併解決這個矛盾在他的分支
    • 你應該保護樹幹從的初級開發人員提交但既無必要,也很重要的整體過程
    • https://stackoverflow.com/a/7387277/23264更多信息請參見(有一些奇特的ASCII藝術)
  2. 可以接受補丁的人送左右。這是一個非常手動的過程,但它取決於您擁有多少個Junior Developer。請注意,雖然聽起來不可能,但整個svn開發過程的工作原理是將補丁發送到郵件列表,直到您發送足夠的提交者權限。

地板
0
1

你可以讓你的初級開發者只在分支上工作,並阻止他們提交主幹。你可以通過在SVN服務器上設置特定的回購路徑的權限,或者通過編寫預先提交的掛鉤來實現。通過設置一個壓倒一切的權限

VisualSVN Server Path Properties

我有樣,在這個例子這裏被騙:

如果您使用VisualSVN服務器,你可以在此對話框中進行配置。對於大型團隊來說,如果您在repo上設置只讀權限,然後明確授予開發人員的/ branches /和高級開發人員的/ trunk /的訪問權限,則需要更具擴展性的東西。

5
votes
answers
29 views
+10

Perforce blame

Is there an equivalent of svn's blame for Perforce on the command line? p4 annotate doesn't display usernames -- only changeset numbers (without ancestor history!).

I currently have to track code back through ancestors and compare against the filelog, and there just has to be an easier way -- maybe a F/OSS utility?

沙发
+30

從p4v客戶端,您可以在所有視圖顯示文件(如文件,更改列表等)上獲得“延時視圖”上下文菜單。

時間推移視圖有很多選項,例如Single Revision,Multiple Revision,用於分析更改內容,何時以及由誰更改。

板凳
+10

@ alanw123:p4pr接近我正在尋找的東西,但它沒有跨越分支邊界:

last if $type eq 'branch';

這是我在編寫自己的實用程序時遇到的主要問題 - 您無法(輕鬆)告訴行如何映射回分支的文件。

地板
+10

p4 annotate命令實際上可以在命令行上使用-I-i命令進行合併/集成和分支(但它不能同時執行兩個:():

-I
Follow integrations into the file. If a line was introduced into the file by a merge, the source of the merge is indicated as the changelist that introduced the line. If that source was itself the result of an integration, that source will be used instead, and so on.
The use of the -I option implies the -c option. The -I option cannot be combined with -i.
-i
Follow file history across branches. If a file was created by branching, Perforce includes revisions up to the branch point.
The use of the -i option implies the -c option. The -i option cannot be combined with -I.
22
votes
answers
25 views
+10

Failed to run the WC DB work queue associated with file

Without thinking I added and committed a file through my osx system that had a question mark in it not thinking about how this would impact windows. On windows when I did the update it failed because it was unable to create a file with a ? in it so I went back to my osx system and did an svn rename on the file however on windows this did not help since svn goes through the history of all steps to bring a workspace up to the head revision. Needless to say I am stuck, any ideas how I can fix this?

Here is my current svn error log when updating (tried using Tortoise SVN and command line, both are the same):

svn: E155009: Failed to run the WC DB work queue associated with 'F:Develcdev	runkappSharemediafrontend?_12x15.png', work item 53314 (file-install appShare/media/frontend/?_12x15.png 1 0 1 1)
svn: E720123: Can't move 'F:Develcdev	runk.svn	mpsvn-68A36D23' to 'F:Develcdev	runkappSharemediafrontend?_12x15.png': The filename, directory name, or volume label syntax is incorrect.

Each time I do this I have to delete the records in the WORK_QUEUE table in wc.db and then do a cleanup before svn will let me try something else.

沙发
+70

These are the steps that I did to get rid of this error

  1. Download sqlite from https://www.sqlite.org/download.html, downLoad the Precompiled Binaries for Windows. I downloaded sqlite-tools-win32-x86-3200100.zip which contains the .exe of sqlite

  2. Extract the zip and add the path where you kept the sqlite3.exe to your windos PATH variable.

  3. Now navigate to the location where you have your .svn directory
  4. Open in command window and execute the sqllite3 .svn/wc.db "delete from work_queue"
  5. Now go ahead and run your svn clean up, everything should work fine.
板凳
+50

I have also faced a similar problem:

I have deleted a local folder (for which svn files were checked out). After this none of the svn commands were working fine, even from cmd prompt(admin), also svn cleanup was not working.

Fix:

  1. I have created a dummy file, for which the error 'svn: E155009: Failed to run the WC DB work queue associated with' is coming.
  2. Then I have run svn cleanup in cmd line, found the same error in that a file couldn't be read
  3. Repeated the above steps for the file not found in step2.
  4. svn cleanup, it works!
地板
+40

We ran into this issue because MalwareBytes Ransomware Protection was turned on along with a few other MalwareBytes components.

Others have reported that Bitdefender caused this issue as well, on both MacOS and Windows.

The actual error we saw was

Can't move 'xxx' to 'yyy': Access is denied.

It also broke the ability to run a cleanup operation.

It seems to be a race condition -- the offending file changes each time. Disabling the Ransomware Protection component resolved the issue.

This was my issue as well, thanks for posting this! – Steve Feb 16 '18 at 16:44

@Steve Glad it helped someone! We spent HOURS dealing with this. – Lynn Crumbling Feb 16 '18 at 17:58

This issue occurred with Bitdefender on MacOS. I turned off Bitdefender's "autopilot" and all was well once again. Don't forget to turn your antivirus protection back on when you are done! – CFitz May 29 '18 at 20:20

Also here the problem was Bitdefender, I am under Windows 10. – Zac Nov 26 '18 at 13:35

4楼
+30

Creating an .svn/tmp directory solved the issue, in my case

5楼
+20

Just delete .svn mp in the workspace.Did work for me.

There is no tmp in the .svn folder in my case. Actually created it solved the problem. – BeC Jun 20 '17 at 8:47

6楼
+10

Closing all the visual studio instances fixes the problem to me.

7楼
0

I just opened the file in notepad ( a .less file in my case ), gave it a modification ( enter for instance ) and saved the file. After that i was able to clean up.

8楼
0

To solve the issue in windows 7, let's say in your folder X that won't cleanup there is another folder called A in which the issue appear. Just checkout the folder A elsewhere and copy it back (of course without .svn cached folder) to X and then run cleanup and update etc.

34
votes
answers
23 views
+10

How exactly does subversion store files in the repository?

I read the subversion book and it is clear to me that subversion does not store individual files but only deltas in order to minimize disk space. Subversion also does the same with binary files as well (this used to be a huge weakness of CVS).

However I do not understand the exact mechanism. When I commit a file what happens?

  1. Subversion stores only the diff (and already has the old version)
  2. Subversion deletes the previous version, stores the new file intact and creates a reverse diff in order to "re-create" the old version if needed.
  3. Something else that I haven't thought of.

The first case might seem the most logical. This however raises another question. If I have in a subversion repository a file with 1000 commits and a new developer checks out a clean copy, then subversion would have to fetch the original version (initial import) and apply 1000 diffs on this before returning the result. Is this correct? Is there some sort of caching for files where the latest version is kept as well?

Basically where can I find information on the svn repository internals?

Update: Apparently the backend of subversion plays a big role in this. At the time or writing FSFS uses option 1 while BDB uses option 2. Thanks msemack!

up vote 14 down vote accepted favorite
沙发
+140
+50

因為Subversion的存儲庫格式完全是內部的,所以他們可以自由地將表示從一個修訂更改為下一個修訂。我相信當前版本通常存儲反向增量(您的選項2),但也會定期存儲完整的快照,因此在返回結果之前不必解析1000個差異。

Subversion 1.6發行說明中有一個關於文件系統存儲改進的部分,其中有一些關於此的註釋,以及指向其他源的鏈接。可以說Subversion數據存儲的細節很複雜,可能會有所變化。

Subversion源代碼樹中還有一個設計文檔,描述了在Subversion中使用skip deltas通常,/ notes /目錄包含有關Subversion內部的幾個有用文檔。

+90
+70

Subversion設計文檔(雖然已經過時了),你可以得到這個:

與許多其他版本控制系統一樣,Subversion將更改存儲為差異。它沒有完整的節點副本; 相反,它將最新版本存儲為全文,以及之前的版本作為一系列反向差異存儲(“diff”一詞在這里松散使用 - 對於文件,它表示vdeltas,對於目錄,它表示表示更改的格式目錄)。

我認為自那以後沒有改變。

另外,請參閱冒泡方法

+30

常規FSFS規範可能對您有所幫助。

或者如果你使用Berkeley DB,這裡是規範。

如果我正確理解了所有內容,FSFS使用反向增量來存儲更改和跳過增量來加速某些操作。

+10

每次提交更改時,存儲庫都會存儲該整個存儲庫樹的新修訂,並使用新的修訂號標記新樹。當然,除了您更改的部分之外,大多數樹與之前的修訂版相同。

新版本號是一個順序標籤,適用於整個新樹,而不僅僅是您在該修訂版中觸及的文件和目錄。但是,通俗地說,修訂號用於表示該修訂中提交的更改; 例如,“r588中的變化”(“r588”是“修訂版588”的簡寫)實際上意味著“存儲庫樹587和588之間的差異”,或換句話說,“對樹587進行更改以生成樹588” “。

看看:Subversion常見問題解答

0
votes
answers
23 views
+10

SVN server for Mac OSX [closed]

I used to use Visual SVN on Windows. Now I am on Mac OSX.

Does anyone know of an SVN server for MAC OSX which is as easy to use as Visual SVN on Windows? I don't want to be typing in console commands, I'd like a nice and simple UI :-)

Cheers

0
votes
answers
52 views
+10

如何在GIT和SVN之間進行雙向同步

1

如何在GIT庫和SVN庫之間進行雙向同步?我已經看到了如何從SVN轉換爲GIT,但沒有太多關於如何在兩者之間順利同步。如何在GIT和SVN之間進行雙向同步

目的是將項目保存在兩種類型的存儲庫中,並讓它們生成/跟蹤相同的內容。

作爲一個額外的要求,作爲主題的SVN存儲庫不包含主幹和分支。

沙发
0
3

爲了確保SNV和Git存儲庫之間真正的雙向同步,您需要一個專用的第三方工具。

我只知道SubGit能夠做到這一點可靠。但它不是免費的。只有從SVN到Git的一次性遷移是。

板凳
0
0

這篇文章 - Creating a two way sync between a Github repository and Subversion - 看起來是一個解決方案:

  • 創建一個GitHub的服務器或服務器到位桶上一個混帳回購協議。克隆空回購。添加一個readme-git文件並在master上提交。

  • 最初創建SVN跟蹤分支:

 
    git branch --no-track svnsync 
    git checkout svnsync 
    git svn init http://your-svn-server/your-repo 
       # here removed `-s` if the svn repo is not on a standard layout 
       # or use file:///path/to/local/repo 
    git svn fetch 
       # add if needed `--authors-file svn-authors.txt` 
    git reset --hard remotes/git-svn 
       # the post said `remotes/trunk` but it does not look right 
  • 同步從SVN到混帳:
 
    git checkout svnsync 
    git svn rebase 
    git checkout master 
    git merge svnsync 
       # add `--allow-unrelated-histories` to the first merge 
    git push origin master 
  • 同步從GIT中的svn:
 
    git checkout master 
    git pull origin master 
    git checkout svnsync 
    git svn rebase 
    git merge --no-ff master 
    git commit 
    git svn dcommit 

上述順序的一個缺點是添加了僞造的readme-git文件,因此可能會拉出非跟蹤分支。我想,從最初從svn回購克隆的git回購開始,可能會避免這個問題。

+1

是的,它可以用於簡單的回購/分支機構,但是SubGit編寫的角落案例太多以致於無法解決這些問題。 – VonC