This paper addresses the crew scheduling for long-distance passenger train services. A heuristic with bin packing features is developed to generate repeatable crew schedules that satisfy the operational and crew allocation rules. By ensuring the connectivity of crew duties that can be repeated over periodic train schedules, a better estimate of the crew requirement in a region is also obtained. Further, the heuristic ensures a fair division of the total workload and creates long duty cycles, which also makes the process of cyclic rostering easier. The paper also presents an exact approach for crew scheduling using a combination of constraint programming and set covering formulations. The exact approach is not computationally viable for practical scale problem instances, but the heuristic generates good quality solutions (often very close to optimal) even on large data sets. We illustrate the approach on data from the Mumbai Division in Indian Railways and the computational results show that there is potential to reduce the total number of crew duties in the region by around 12%. The heuristic approach provides an efficient way to generate improved crew schedules every time there is a change in the train timetable.