lineEnding
and the clash of
operating systemsComplementing the utility of setwdOS
, another
tool I came to develop in the context of OS-dependent programming and,
more specifically, line endings is introduced in the following. Those
who have worked with numerous people on one and the same project,
e.g. hosted on GitHub or Subversion, might have already grown familiar
with the topic: line endings are automatically adjusted to your local
OS, rendering the otherwise practical ‘track changes’ functionality
useless. Obviously, this makes it very hard for your collaborators to
understand the actual changes you made to a particular file since every
single line is marked as modified.
I came to face this issue when dealing with version control on
Subversion and couldn’t help but develop this short code snippet in
order for my collaborators to track my changes. GitHub seemingly offers
a built-in option to manipulate global
settings for line endings, but I haven’t tried this so far. Anyway,
my manual approach goes by the name lineEnding
and
requires
list.files
),to = "dos"
), or vice versa
(to = "unix"
).Note that the code relies on the dos2unix
external
software tool which can easily be installed on Linux via
or downloaded directly from the project website for any
other OS. Once everything is set up, try the following brief example to
clarify what I was trying to explain and demonstrate the usefulness of
lineEnding
:
## input file
infile <- file.path(system.file(package = "Orcs"), "DESCRIPTION")
system(paste("file", infile))
# > C:/Users/.../R/win-library/3.5/Orcs/DESCRIPTION: ASCII English text, with CRLF line terminators
## convert to dos line endings and write to output file
outfile = file.path(tempdir(), "DESCRIPTION4wd")
lineEnding(infile, outfile = outfile, to = "unix")
system(paste("file", outfile))
# > C:\Users\...\AppData\Local\Temp\RtmpMX3o1b/DESCRIPTION4wd: ASCII English text