How to have TortoiseSVN always freeze svn:externals for tags

扶醉桌前 提交于 2019-12-03 08:43:57

问题


Is this possible with tortoiseSVN?:

Always freeze svn:externals for tags

the scenario is our trunk will always use the 'HEAD' revision for externals, however when we create 'tags' we would like for them to have a revision set for externals to properly 'freeze' them at a specific point in time.

Update

Thanks to everyone for your feedback/info.

Since I could not find anything that would completely meet our needs (tried smartsvn and svncopy.pl) I made a console app that so far has passed all our test cases.

A high level overview: The app takes a repository URL then looks for all externals and adds the last commit revision for them - I do a svn info and get the "commit revision".

The app works with both folder and single file externals.

Here is the source code and complete setup files: http://svnxf.codeplex.com/


回答1:


I found this post today as I looked for a solution to the exact same problem. Eventually I found that TortoiseSVN in their latest version DOES support this desired functionality: TortoiseSVN 1.7 Release Notes.

Hopefully this will help others who find this post when researching the same issue.




回答2:


The recommended best practice is to always use an explicit revision (not HEAD) in externals definitions. From the documentation:

You should seriously consider using explicit revision numbers in all of your externals definitions. Doing so means that you get to decide when to pull down a different snapshot of external information, and exactly which snapshot to pull. … For software projects, this could be the difference between a successful and a failed build of an older snapshot of your complex codebase.

To directly answer your question: no, it’s not possible to automatically change the externals definitions when tagging using TortoiseSVN. It will have to be done manually when creating the tag.




回答3:


You can try svncopy.pl (find it on google) It is a perl script that answer your need.




回答4:


You should try SmartSVN which optionally converts HEAD-externals to fixed externals when creating tags or branches. You can find this option (External Revisions: (o) Leave as is ( ) Fix all ( ) Fix except below) at the bottom of the Add Tag/Add Branch dialogs.




回答5:


I would second Michael.

Additionally to recommendation from SVN documentation:

  • Usage non-fixed revisions in svn:externals makes harder to update working copy to a specified revision (e.g. during bug investigation)
  • Log of directory with svn:externals will be incomplete which may provide false information about change sets between revisions
  • Branching and merging may become more complicated

Generally, SVN seems to be designed mostly for code contained in a common directory. svn:externals (even by name) is added for referencing external repositories. So I would expect other problems additionally to mentioned above.

On my experience need for usage of svn:externals for non-fixed revisions frequently comes from wrong structure in repository.

May be it's not your case, I just advise to take into account these points...




回答6:


Update

Thanks to everyone for your feedback/info.

Since I could not find anything that would completely meet our needs (tried smartsvn and svncopy.pl) I made a console app that so far has passed all our test cases.

A high level overview: The app takes a repository URL then looks for all externals and adds the last commit revision for them - I do a "svn info" and get the "commit revision".

The app works with both folder and single file externals.

Here is the source code and complete setup files: http://svnxf.codeplex.com/




回答7:


You can specify the revision in externals:

third-party/skins -r148        http://svn.example.com/skinproj

See svnbook




回答8:


I know this isn't for tortoiseSVN, but if you use eclipse with subversive, you can right click the project and select team->tag. Subversive freezes externals by default and formats the properties quite nicely.



来源:https://stackoverflow.com/questions/1982538/how-to-have-tortoisesvn-always-freeze-svnexternals-for-tags

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!