How to have TortoiseSVN always freeze svn:externals for tags

前端 未结 8 1473
春和景丽
春和景丽 2021-02-04 03:06

Is this possible with tortoiseSVN?:

Always freeze svn:externals for tags

the scenario is our trunk will always use the \'HEAD\' revision for externa

相关标签:
8条回答
  • 2021-02-04 03:22

    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.

    0 讨论(0)
  • 2021-02-04 03:24

    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...

    0 讨论(0)
  • 2021-02-04 03:28

    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.

    0 讨论(0)
  • 2021-02-04 03:33

    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.

    0 讨论(0)
  • 2021-02-04 03:36

    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/

    0 讨论(0)
  • 2021-02-04 03:38

    You can specify the revision in externals:

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

    See svnbook

    0 讨论(0)
提交回复
热议问题