Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-3949

Subversion checkouts creates files for symlinks

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Critical Critical
    • subversion-plugin
    • None
    • Platform: All, OS: Linux

      The check out of project containing checked in symlinks creates a workspace
      with files instead of symlinks. E.g., creating a repository containing
      the elements:

      $ svn co file://$PWD/test/trunk/data
      A data/file.link
      A data/file.txt
      Checked out revision 3.
      $ ls -l data
      total 12
      lrwxrwxrwx 1 mrohan mrohan 8 Jun 28 17:55 file.link -> file.txt
      rw-rw-r- 1 mrohan mrohan 16 Jun 28 17:55 file.txt

      Within Hudson, the workspace contains the elements:

      $ ls -l data
      total 16
      rw-rw-r- 1 hudson hudson 13 Jun 28 17:53 file.link
      rw-rw-r- 1 hudson hudson 16 Jun 28 17:53 file.txt
      $ cat data/file.link
      link file.txt

      There is no newline in the file created.

        1. svnkit.w-def.0.log
          12 kB
        2. svnkit.wo-def.0.log
          12 kB
        3. output.1.311.txt
          0.5 kB
        4. output.1.310.txt
          0.5 kB

          [JENKINS-3949] Subversion checkouts creates files for symlinks

          mkrohan created issue -

          Hudson v1.313 (latest to-day) contains the Subversion plugin which in turns uses
          SVNKit 1.3.0 and this in turns supports SVN 1.6.x and hence SVN externals
          pointing to files as well as directories.

          Andrea Barbieri added a comment - Hudson v1.313 (latest to-day) contains the Subversion plugin which in turns uses SVNKit 1.3.0 and this in turns supports SVN 1.6.x and hence SVN externals pointing to files as well as directories.

          duplicate of Issue 3673 as well, I think...

          Andrea Barbieri added a comment - duplicate of Issue 3673 as well, I think...

          mkrohan added a comment -

          This issue is not related to Subversion externals. The underlying problem is
          with Unix symbolic links checked into Subversion. Upto version 1.310, Hudson
          correctly created symbolic links on checking out from Subversion. Starting
          with version 1.311, it now creates files instead.

          From your comments, I suspect you work primarily on Windows. The following
          "how to repeat" requires Unix (e.g., Linux). I'm using my home directory in
          the following commands (/home/mrohan), substitute where appropriate:

          1) Create a Subversion repository:
          $ svnadmin create /home/mrohan/repos

          2) Create a directory in Subversion:
          $ svn mkdir -mExample file:///home/mrohan/repos/xmpl

          Committed revision 1.

          3) Checkout the directory:
          $ svn co file:///home/mrohan/repos/xmpl
          Checked out revision 1.

          4) Populate with a file and symbolic link and check in:
          $ cd xmpl
          $ echo "This is a file" > file.txt
          $ ln -s file.txt file.link
          $ ls -l
          total 4
          lrwxrwxrwx 1 mrohan mrohan 8 2009-06-30 09:32 file.link -> file.txt
          rw-rw-r- 1 mrohan mrohan 15 2009-06-30 09:32 file.txt
          $ svn add *
          A file.link
          A file.txt
          $ svn commit -mExample
          Adding file.link
          Adding file.txt
          Transmitting file data ..
          Committed revision 2.

          5) Start Hudson and define a job "Symlink Test" with
          5.1) Source Code in Subversion:
          Repository: file:///home/mrohan/repos/xmpl
          Local module: xmpl
          5.2) Add an "Execute shell" build step containing
          ls -l
          ls -l xmpl

          6) Run this job under v1.310 and v1.311, v1.312 or v1.312.

          The output for v1.310 shows a symlink in the workspace. The output
          for any later version show a file of 13 bytes. I'll attach my output.

          This is probably a bug in SVNKit but it is a regression for Hudson.

          mkrohan added a comment - This issue is not related to Subversion externals. The underlying problem is with Unix symbolic links checked into Subversion. Upto version 1.310, Hudson correctly created symbolic links on checking out from Subversion. Starting with version 1.311, it now creates files instead. From your comments, I suspect you work primarily on Windows. The following "how to repeat" requires Unix (e.g., Linux). I'm using my home directory in the following commands (/home/mrohan), substitute where appropriate: 1) Create a Subversion repository: $ svnadmin create /home/mrohan/repos 2) Create a directory in Subversion: $ svn mkdir -mExample file:///home/mrohan/repos/xmpl Committed revision 1. 3) Checkout the directory: $ svn co file:///home/mrohan/repos/xmpl Checked out revision 1. 4) Populate with a file and symbolic link and check in: $ cd xmpl $ echo "This is a file" > file.txt $ ln -s file.txt file.link $ ls -l total 4 lrwxrwxrwx 1 mrohan mrohan 8 2009-06-30 09:32 file.link -> file.txt rw-rw-r - 1 mrohan mrohan 15 2009-06-30 09:32 file.txt $ svn add * A file.link A file.txt $ svn commit -mExample Adding file.link Adding file.txt Transmitting file data .. Committed revision 2. 5) Start Hudson and define a job "Symlink Test" with 5.1) Source Code in Subversion: Repository: file:///home/mrohan/repos/xmpl Local module: xmpl 5.2) Add an "Execute shell" build step containing ls -l ls -l xmpl 6) Run this job under v1.310 and v1.311, v1.312 or v1.312. The output for v1.310 shows a symlink in the workspace. The output for any later version show a file of 13 bytes. I'll attach my output. This is probably a bug in SVNKit but it is a regression for Hudson.

          mkrohan added a comment -

          Created an attachment (id=760)
          Subversion check-out listing for v1.310

          mkrohan added a comment - Created an attachment (id=760) Subversion check-out listing for v1.310

          mkrohan added a comment -

          Created an attachment (id=761)
          Subversion check-out listing for v1.311

          mkrohan added a comment - Created an attachment (id=761) Subversion check-out listing for v1.311

          mkrohan added a comment -

          Downloaded SVNKit 1.3.0.5847, made the example repository available via
          http (not sure what the exact file: syntax is on Windows). jsvn successfully
          checks out and creates a symlink on Unix. On Windows, since symlinks are
          not supported on this platform, it instead creates a file containing
          "link file.txt" (13 bytes).

          It appears Hudson might be configuring SVNKit for Windows on Unix systems.

          jsvn on Unix:
          $ jsvn co http://10.20.96.133/repos/xmpl
          A xmpl/file.link
          A xmpl/file.txt
          Checked out revision 2.
          $ ls -l xmpl
          total 4
          lrwxrwxrwx 1 mrohan mrohan 8 Jun 30 14:26 file.link -> file.txt
          rw-rw-r- 1 mrohan mrohan 15 Jun 30 14:26 file.txt

          jsvn on Windows:
          C:\mrohan\svnkit>jsvn co http://10.20.96.133/repos/xmpl
          A xmpl\file.link
          A xmpl\file.txt
          Checked out revision 2.

          C:\mrohan\svnkit>dir xmpl
          Volume in drive C is MROHAN-DEV3
          Volume Serial Number is 707B-3181

          Directory of C:\mrohan\svnkit\xmpl

          30-Jun-09 14:26 <DIR> .
          30-Jun-09 14:26 <DIR> ..
          30-Jun-09 14:26 13 file.link
          30-Jun-09 14:26 15 file.txt
          2 File(s) 28 bytes
          2 Dir(s) 14,278,062,080 bytes free

          C:\mrohan\svnkit>type xmpl\file.link
          link file.txt

          mkrohan added a comment - Downloaded SVNKit 1.3.0.5847, made the example repository available via http (not sure what the exact file: syntax is on Windows). jsvn successfully checks out and creates a symlink on Unix. On Windows, since symlinks are not supported on this platform, it instead creates a file containing "link file.txt" (13 bytes). It appears Hudson might be configuring SVNKit for Windows on Unix systems. jsvn on Unix: $ jsvn co http://10.20.96.133/repos/xmpl A xmpl/file.link A xmpl/file.txt Checked out revision 2. $ ls -l xmpl total 4 lrwxrwxrwx 1 mrohan mrohan 8 Jun 30 14:26 file.link -> file.txt rw-rw-r - 1 mrohan mrohan 15 Jun 30 14:26 file.txt jsvn on Windows: C:\mrohan\svnkit>jsvn co http://10.20.96.133/repos/xmpl A xmpl\file.link A xmpl\file.txt Checked out revision 2. C:\mrohan\svnkit>dir xmpl Volume in drive C is MROHAN-DEV3 Volume Serial Number is 707B-3181 Directory of C:\mrohan\svnkit\xmpl 30-Jun-09 14:26 <DIR> . 30-Jun-09 14:26 <DIR> .. 30-Jun-09 14:26 13 file.link 30-Jun-09 14:26 15 file.txt 2 File(s) 28 bytes 2 Dir(s) 14,278,062,080 bytes free C:\mrohan\svnkit>type xmpl\file.link link file.txt

          mkrohan added a comment -

          This is a Unix (Linux) specific issue.

          mkrohan added a comment - This is a Unix (Linux) specific issue.

          akosmaroy added a comment -

          is there a workaround for this issue, until it is fixed?

          akosmaroy added a comment - is there a workaround for this issue, until it is fixed?

          mkrohan added a comment -

          I have not been able to find a workaround. I simply reverted my instance back
          to v1.309 (don't update to every version).

          mkrohan added a comment - I have not been able to find a workaround. I simply reverted my instance back to v1.309 (don't update to every version).

            Unassigned Unassigned
            mkrohan mkrohan
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: