My colleague uses a Windows editor for writing code and a Unix system to run it. He has practical issues with version control. Suggestions?
Colleague (PhD student) is currently working on a large development task and I would like him to use version control (git) for 1) his own sanity and mine 2) so that the rest of the group is able to use/track his changes over time.
We are working in a research lab and I have a relationship halfway between "mentor" and "manager" with him. However we are both reporting to the same supervisor, who does not care about the issue at all. Our group uses "horizontal development" meaning that peer self-organization is expected and encouraged.
Longish circumstances below, TLDR at the end.
Current situation
The project involves a Unix-oriented C++ program, with (mostly) test-driven development. The code must thus be compiled and run on a Unixish system. We have a development server where colleague has a home directory and all dependent tools installed (by me). One "reference" copy of the source tree is hosted using git on another repository server on the network; other team members have local copies on their desktop and already have functional workflows.
His current setup is as follows:
A. he made once a repository checkout of the project in his Unix home directory.
B. he then made a copy of that checkout on his Windows desktop.
C. he edits and investigates code on his Windows desktop.
D. whenever he wants to test his code, he:
-
copies the modified files manually with a graphical SCP client for Windows (ie a: navigate with point-and-click to each directory with modified files, b: navigate with point-and-click to the same directory on the server, then c: find the modified files based on "modified" timestamp, then d: copy the files using drag-and-drop)
-
using a remote session in PuTTY, compile and test
-
for every error in the Unix terminal, go back to the Windows editor and investigate.
E. whenever he has to commit his code to the repository, he:
-
makes a new checkout of the latest version from the repository in his Unix homedir
-
runs "diff" between the new repository version and his Unix working dir
-
using the Windows editor, manually copies the changes from the diff file to each file in turn
-
tests as per D# above
-
then commit.
Needless say, the pain in #E means that commits happen seldom, if ever. Also, lack of a proper backup solution on the Windows system means that he has no incremental vision of his work, and commits populate huge swaths of changes at once, which pose a large obstacle to understand his development steps.
Constraints
- in our organization any Windows desktop must be centrally administrated by our IT department, which means we can't install 3rd party tools that require administrator rights to install. In contrast (and strangely) Mac and Linux desktops are not administered by IT and are under the sole responsibility of the user.
-
Said colleague has freshly graduated from China:
- he suffers from a perceptible lack of initiative-taking about the problem, which I attribute to his experience in China restricted to vertical work hierarchies exclusively. Note that he does take initiative about writing code, just not about anything related to version control and his strange windows-unix workflow.
-
the Windows box is heavily Chinese-customized; he is used to (and uses) the Chinese input methods. He also uses all kinds of Chinese-speaking Windows-specific software: chat clients, translators, and other things I don't understand.
our research group has always been flexible as to work environments, meaning there were no hard "must do" or "don't" with regards to tools, desktop setup, etc. It is assumed that all members have appropriate skills to set up their environment. Therefore it would be difficult to mandate a specific work environment to my colleague unless it is mandated to everyone else, which everyone else but him would loathe.
Questions
A. as a starting point,
how can I smooth his workflow? For example:
- is there some form of git client for Windows that 1) he could integrate in his workflow and 2) that does not require admin rights to install?
-
are there other synchronization facilities that would make his testing cycle simpler?
B.
are there any Chinese language documentation / resources to 1) explain the problems that version control solves 2) introduce the use of distributed version control to newcomers?
C. assuming the computer is powerful enough,
what combination of host OS and virtual machines would you suggest to create a work environment that he could run entirely on his desktop?
-- TL;DR --
Chinese colleague without software engineering background edits on Windows, and manually copies code on Unix to compile, test, and commit to git. Workflow is terribly inefficient, impossible to track his changes in git over time.
How to transcend the cultural and experience issues to improve his work environment?
posted by feloniousmonk at 4:30 AM on January 8